在sql中使用group by来对select的结果进行数据分组,在具体使用group by之前需要知道一些重要的规定。 group by子句可以包含任意数目的列。也就是说可以在组里再分组,为数据分组提供更细致的控制。 如果在group by子句中指定多个分组,数据将在最后指定的分
在sql中使用group by来对select的结果进行数据分组,在具体使用group by之前需要知道一些重要的规定。
- group by子句可以包含任意数目的列。也就是说可以在组里再分组,为数据分组提供更细致的控制。
- 如果在group by子句中指定多个分组,数据将在最后指定的分组上汇总。
- group by子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在select中使用了表达式,则必须在group by子句中指定相同的表达式。不能使用别名。
- 出了聚集计算语句外,select语句中的每一列都必须在group by子句中给出。
- 如果分组列中有null值,则null将作为一个分组返回。如果有多行null值,它们将分为一组。
- group by子句必须在where子句之后,order by之前。
对分组过于采用having子句。having子句支持所有where的操作。having与where的区别在于where是过滤行的,而having是用来过滤分组。
另一种理解where与having的区别的方法是,where在分组之前过滤,而having在分组之后以每组为单位过滤。
分组与排序一般在使用group by子句时,也应该使用order by子句。这是保证数据正确排序的唯一方法。
sql select语句的执行顺序:
举个例子吧。
select 考生姓名, max(总成绩) as max总成绩 from tb_grade where 考生姓名 is not null group by 考生姓名 having max(总成绩) > 600 order by max总成绩在上面的示例中 sql 语句的执行顺序如下:
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!