SQL必知必会(第四版) 读书笔记——分组数据
分组常与上一篇数据汇总一起使用,通过GROUP BY 来达到数据的分组。
select sum(列) from 表 group by 列;
GROUP BY 子句可以包含任意数目的列,因而可以对分组进行嵌套,更细致地进行数据分组。
如果在 GROUP BY 子句中嵌套了分组,数据将在最后指定的分组上进行汇总。换句话说,在建立分组时,指定的所有列都一起计算(所以不能从个别的列取回数据)。
GROUP BY 子句中列出的每一列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在 SELECT 中使用表达式,则必须在 GROUP BY子句中指定相同的表达式。不能使用别名。
大多数 SQL 实现不允许 GROUP BY 列带有长度可变的数据类型(如文本或备注型字段)。
除聚集计算语句外,SELECT 语句中的每一列都必须在 GROUP BY 子句中给出。
如果分组列中包含具有 NULL 值的行,则 NULL 将作为一个分组返回。如果列中有多行 NULL 值,它们将分为一组。
GROUP BY 子句必须出现在 WHERE 子句之后,ORDER BY (排序)子句之前。
HAVING():有时我们分组后还需要过滤,这是where达不到这样的效果,可以使用HAVING()函数,在分组后来实现条件过滤。
select 列 from 表 where 条件1 group by 列 HAVING 条件2 order by 列;
下一篇:表联接