首先上答案:
在图中明显的可以看到聚合计算在WHERE之后,所以我们在写sql的时候是无法在WHERE后面写聚合语句的,例如SELECT * FROM user WHERE count(*)>2;这个语句是错误的并且毫无意义。
具体细节也没什么,把上面记熟就可以了。举个题目例子:
SELECT
university,avg(question_cnt) AS avg_question_cnt
FROM
user_profile
GROUP BY
university
ORDER BY
avg_question_cnt
为什么这个语句order by 后面是我们取的别名avg_question_cnt呢,看顺序图我们知道SELECT语句是先于order by的,所以取别名操作先于排序,自然可以根据别名排序。
其次这题order by后面的avg_question_cnt也可以换成聚合函数avg(question_cnt),原因就在于聚合函数在排序之前执行。