group by与where having的使用
当两个表联结后,group by 后面的列如果在select后面出现了,可以直接进行groupby,否则最好加上表名,如果不加表名,且该列是重复列的话,会报错,
where和group by可以连用,但where子句中是不能用聚集函数作为条件表达式的,想要用聚合函数做筛选可以再group by后面跟having做筛选
参考:https://blog.csdn.net/weixin_37609825/article/details/79967246
由于select子句的运行顺序在group by, having等字句之后,group by, having子句中不能使用select中确定的别名;where子句中不能使用汇总函数;这是因为group by在where之后执行,汇总函数必须在group by之后执行,如count函数就是groupby某列时,再count另一列才有意义,否则在where的时候count某一列是没有意义的,
-- 运行顺序 select 性别,count(*) as '学生人数' -- 4 from student -- 1 where 出生日期 > '1990-01-01' -- 2 group by 性别; -- 3