欢迎访问wabc.cc — 源码交易 · 软件定制 · 建站服务一站式平台
全部分类
首页 - 首页 - 解决方案 - 推荐文章 - 马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

分类:推荐文章 · 发布:2025-12-20 · 浏览:1

好的宝宝们

今天我们来分享

聚合查询

首先对我们上次分享的表单查询

进行一些补充

关键字

distinct

去重,在结果中去除重复的行。

语法:

select distinct column_names from 表名;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

我打开的是一个订单详情表

作用于单列:

select distinct(order_id) from order_detail where id<30;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

我们看一下效果

作用于多列:

select distinct order_id, buy_number from order_detail where id<30;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

看来只有一条是重复的

count

统计数量!

select count(id) from order_detail;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

统计表中有多少条记录

select count(distinct(order_id)) from order_detail;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

去掉重复的内容进行统计

concat(str1, str2, ...)

连接函数,可以联合多列,构成一个总的字符串。

select contact(order_id, '-', product_id) from order_detail where id<30;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

concat_ws(separator, str1, str2, ...);

第一个参数(separator)是其他参数的分隔符。

select concat_ws('-', order_id, product_id) from order_detail where id<30;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

注:mysql 的 concat 函数在连接字符的时候,只要其中有某一个字段为 null,那么则整个返回 null.

聚合查询

group by

分组查询,对结果进行分组。通过 group by 子句可以将数据划分到不同的组里,实现对记录的分组查询。

语法:

select column_name, aggregate_function(column_name) from table_name

where condition group by column_name;

我们来打开员工表

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

看到了我们的表中存在一个 office_id

我们打开这个 office 表看一下

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

每个office_id代表着一个公司

select * from employee group by office_id;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

这样我们就把员工按照公司分成了不同的组

单独使用 group by 时,没什么实际意义!在与 avg() , sum(), count() 聚合函数一起使用时,作用最大。

聚合函数

聚合函数的最大特点是它们根据一组数据求出一个值。

聚合函数的结果值只根据选定行中非null的值进行计算,null被忽略。

count()

统计个数

select count(employee_id), office_id from employee group by office_id;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

这样就统计出了公司的员工的数量了

select count(employee_id),gender from employee group by gender;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

我们还可以统计公司男女员工的数量!

max()

求表中某个字段最大值(数值类型)

select max(price) from order_detail;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

在所有订单中单价最高的商品!

select max(price),order_id from order_detail where id>1800 group by order_id;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

这句语句的意思是我们把所有的订单按照订单号进行分组

然后取每组订单中单价最大的那一条

我们来查看一下一号订单

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

在一号订单中 单价最大的就是这个了!

min()

求表中某个字段最小值

select min(price) from order_detail;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

单价最小的商品

select min(price),order_id from order_detail group by order_id;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

sum()

求表中某个字段的总和

select sum(total_money),order_id from order_detail where id > 1800 group by order_id;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

我们就可以看到我们订单的总金额了

我们来一个复杂的

select sum(total_money) as nu, order_id from order_detail group by order_id order by nu desc limit 10;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

这样我们就取出了所有订单中总价前十的订单号和他们的金额!

avg()

求表中某个字段平均值

select avg(total_money),order_id from order_detail group by order_id;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252

select avg(total_money) as nu, order_id from order_detail group by order_id order by nu desc limit 10;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

having 和 where 的区别?

我们都知道 having 和 where 都可以用来筛选数据

“Where” 是一个约束声明,Where 是在结果返回之前起作用的, where 子句在聚合前先筛选记录.也就是说作用在 group by 子句和 having 子句前

“Having”是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having 中可以使用聚合函数。

select count(employee_id), office_id from employee group by office_id;

select count(employee_id), office_id from employee group by office_id having count(employee_id) > 10;

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

我们可以利用 having 筛选员工数大于10个的公司的 ID 但是不能使用 where 来筛选

因为原表中没有 count(employee——id)这个字段

好的今天的数据库就分享到这里了

再见了宝宝们

么么哒

马士兵教程:Java-MySQL数据库查询聚合查询之有那些查询!

Java学习交流群495273252


上一篇:乳腺纤维瘤吃什么药能治 吃什么药管用
下一篇:玖易购平台软件系统源码开发首家

相关文章

源码分类

热门源码

最新资讯

联系我们