目录
分组查询的介绍
分组查询是一种在数据库中对数据进行聚合和分类的查询方式。通过分组查询,可以将数据按照指定的列进行分组,然后对每个分组进行聚合计算。分组查询通常与聚合函数一起使用,例如求和、平均值、最大值、最小值等。分组查询可以帮助我们分析数据,找出数据的特征和规律。
为什么要使用分组
使用分组有多个原因:
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子句,可以实现各种复杂的分组查询操作。