详解GROUP BY 如何与 SELECT 语句进行交互?

本文详细介绍了SQL中的GROUP BY子句,用于根据一个或多个列对数据进行分组,以及如何结合使用聚合函数如COUNT、SUM、AVG和DISTINCT进行数据汇总。WHERE子句在分组前过滤数据,HAVING子句则在分组后筛选结果。ORDER BY用于排序结果,而NULL值在分组时被视为相等。在SELECT列表中,只能选择GROUP BY列或聚合函数。

SELECT 列表:

矢量聚合。如果 SELECT 列表中包含聚合函数,则 GROUP BY 将计算每组的汇总值。这些函数称为矢量聚合。

Distinct 聚合。ROLLUP、CUBE 和 GROUPING SETS 支持聚合 AVG (DISTINCT column_name)、COUNT (DISTINCT column_name) 和 SUM (DISTINCT column_name) 。

WHERE 子句:

执行任何分组操作之前,SQL 会删除不满足 WHERE 子句中条件的行。

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

HAVING 子句:

SQL 使用 having 子句来筛选结果集内的组。

SELECT column_name, SUM(column_name1) AS column_name_1
FROM table_name
GROUP BY column_name
HAVING column_name > 10   

ORDER BY 子句:

使用 ORDER BY 子句可以对结果集进行排序。GROUP BY 子句不能对结果集进行排序。

SELECT column_name, SUM(column_name1) AS column_name_1
FROM table_name AS table_name_1
GROUP BY column_name
ORDER BY column_name;

NULL 值:

如果组合列包含 NULL 值,则所有的 NULL 值都将被视为相等,并会置入一个组中。


GROUP BY和SELECT的一些总结:

如果在有group by的SQL操作中,select后面显示的结果集字段只有两种: 要么就只有group by后出现的字段,要么就是group by后出现的字段 + 聚合函数的组合(常用的五种聚合函数: min()求列中最小值 , max()求列中最大值 , avg()求平均值 , sum()求列中字段对应数值的总和 , count()求列的总条数)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值