GROUP BY 分组查询与聚合函数
分组后,SELECT 列表中只能出现 分组字段 或 聚合函数,如果引用了既不在 GROUP BY 中也没有被聚合函数包裹的字段,就会报错:
消息 8120,级别 16,状态 1,第 1 行
选择列表中的列 'Test.dbo.student.stu_id' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。Code language: JavaScript (javascript)
参考文档:聚合函数 (Transact-SQL) – SQL Server
聚合函数对一组值执行计算并返回单个值。除
COUNT(*)外,聚合函数都会忽略NULL值。聚合函数常与GROUP BY子句一起使用。
使用聚合函数配合分组
SELECT stu_gender, stu_age, MAX(stu_name), MIN(stu_name), COUNT(1)
FROM [Test].[dbo].[student] s
GROUP BY stu_gender, stu_age
GOCode language: CSS (css)
可以使用 MAX() 或 MIN() 来获取一个组里其他字段的最大或最小值。比如下面有两个同名的人,可以取其中一人的添加时间作为代表:
SELECT name, MAX(cjsj) AS cjsj
FROM person
GROUP BY nameCode language: PHP (php)
Previous: 字段数量对查询性能的影响测试