mysq数据库查询之分组查询

目录

分组查询的介绍

为什么要使用分组

1、对数据进行分组,一般有两种使用场景:

⑴单独使用GROUP BY关键字

⑵将GROUP BY关键字与聚合函数一起使用(常用)


分组查询的介绍

分组查询是一种在数据库中对数据进行聚合和分类的查询方式。通过分组查询,可以将数据按照指定的列进行分组,然后对每个分组进行聚合计算。分组查询通常与聚合函数一起使用,例如求和、平均值、最大值、最小值等。分组查询可以帮助我们分析数据,找出数据的特征和规律。

为什么要使用分组

使用分组有多个原因:

1. 整理和组织数据:分组可以帮助将数据按照特定的标准进行整理和组织,使数据更易于理解和分析。

2. 汇总和统计数据:分组可以将数据按照特定的标准进行汇总和统计,从而得出有价值的信息和洞察。

3. 进行比较和对比:通过分组可以将不同组别的数据进行比较和对比,从而揭示出组别之间的差异和相似之处。

1、对数据进行分组,一般有两种使用场景:

⑴单独使用GROUP BY关键字
create database cl;
USE cl



create table  car_info
(
brand_Id int,
brand varchar(20),
color varchar(20),
price int,
brand_Bernum varchar(20),
car_Name varchar(20),
Car_mil int 
)

INSERT INTO car_info(brand_Id,brand,color,price,brand_Bernum,car_Name,Car_mil)
VALUES(1,'阿里巴巴','黑色',123,'B湘99999','五菱宏光',10),
(2,'淘宝','红色',100,'B湘66666','玛莎拉蒂',100)

select price,brand,color from car_info
GROUP BY price,brand,color

效果图:

⑵将GROUP BY关键字与聚合函数一起使用(常用)

1、GROUP BY关键字通常与集合函数一起使用。集合函数包括COUNT()函数、SUM()函数、AVG()函数、MAX()函数和MIN()函数

2、如果GROUP BY不与聚合函数一起使用,那么查询结果就是字段取值的分组情况
⑴字段中取值相同的记录为一组,但是只显示该组的第一条记录(跟前面GROUP BY单独使用一样)

3、常用的聚合函数有:

⑴COUNT()函数:用于统计记录的条数

create database cl;
USE cl

create table  car_info
(
brand_Id int,
brand varchar(20),
color varchar(20),
price int,
brand_Bernum varchar(20),
car_Name varchar(20),
Car_mil int 
)

INSERT INTO car_info(brand_Id,brand,color,price,brand_Bernum,car_Name,Car_mil)
VALUES(1,'阿里巴巴','黑色',123,'B湘99999','五菱宏光',10),
(2,'淘宝','红色',100,'B湘66666','玛莎拉蒂',100)

select price,count(*) from car_info
GROUP BY price

效果图:

⑵SUM()函数:用于计算字段的值的总和

create database cl;
USE cl

create table  car_info
(
brand_Id int,
brand varchar(20),
color varchar(20),
price int,
brand_Bernum varchar(20),
car_Name varchar(20),
Car_mil int 
)

INSERT INTO car_info(brand_Id,brand,color,price,brand_Bernum,car_Name,Car_mil)
VALUES(1,'阿里巴巴','黑色',123,'B湘99999','五菱宏光',10),
(2,'淘宝','红色',100,'B湘66666','玛莎拉蒂',100)

select brand_Id,sum(price) from car_info
GROUP BY brand_Id

效果图:

⑶AVG()函数:用于计算字段的值的平均值

create database cl;
USE cl

create table  car_info
(
brand_Id int,
brand varchar(20),
color varchar(20),
price int,
brand_Bernum varchar(20),
car_Name varchar(20),
Car_mil int 
)

INSERT INTO car_info(brand_Id,brand,color,price,brand_Bernum,car_Name,Car_mil)
VALUES(1,'阿里巴巴','黑色',123,'B湘99999','五菱宏光',10),
(2,'淘宝','红色',100,'B湘66666','玛莎拉蒂',100)

select brand_Id,avg(price) from car_info
GROUP BY brand_Id

效果图:

⑷MAX()函数:用于查询字段的最大值

create database cl;
USE cl

create table  car_info
(
brand_Id int,
brand varchar(20),
color varchar(20),
price int,
brand_Bernum varchar(20),
car_Name varchar(20),
Car_mil int 
)

INSERT INTO car_info(brand_Id,brand,color,price,brand_Bernum,car_Name,Car_mil)
VALUES(1,'阿里巴巴','黑色',123,'B湘99999','五菱宏光',10),
(2,'淘宝','红色',100,'B湘66666','玛莎拉蒂',100)

select brand_Id,max(price) from car_info
GROUP BY brand_Id

效果图:

⑸MIN()函数:用于查询字段的最小值

create database cl;
USE cl

create table  car_info
(
brand_Id int,
brand varchar(20),
color varchar(20),
price int,
brand_Bernum varchar(20),
car_Name varchar(20),
Car_mil int 
)

INSERT INTO car_info(brand_Id,brand,color,price,brand_Bernum,car_Name,Car_mil)
VALUES(1,'阿里巴巴','黑色',123,'B湘99999','五菱宏光',10),
(2,'淘宝','红色',100,'B湘66666','玛莎拉蒂',100)

select brand_Id,min(price) from car_info
GROUP BY brand_Id

效果图:

总结

分组查询是指将数据按照指定的列进行分组,并对每个分组进行统计、计算或筛选的查询操作。

在MySQL中,使用GROUP BY子句可以实现分组查询。GROUP BY子句可以跟在SELECT语句之后,用于指定要分组的列名。

常见的分组查询函数有:
1. COUNT:用于统计分组中的数据行数。
2. SUM:用于计算分组中列的和。
3. AVG:用于计算分组中列的平均值。
4. MIN:用于找出分组中列的最小值。
5. MAX:用于找出分组中列的最大值。

分组查询还可以结合HAVING子句使用,用于对分组结果进行筛选。HAVING子句可以跟在GROUP BY子句之后,用于指定筛选条件。

例如,以下是一个基本的分组查询示例:
SELECT department, COUNT(*) 
FROM employees
GROUP BY department;

该查询会按照department列分组,并统计每个分组中的数据行数。

如果想要按照多个列进行分组,只需在GROUP BY子句中指定多个列名即可。

总结起来,分组查询是一种非常有用的查询技巧,可以用于对数据进行统计、计算和筛选。通过使用COUNT、SUM、AVG、MIN、MAX等函数以及GROUP BY和HAVING子句,可以实现各种复杂的分组查询操作。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值