我的理解是:如果执行下面这段代码,一共有三次扫描:
1. 第一次扫描整张表格whatever,将不同的行按照jobcode的值是否相同归在一起。
2. 第二次扫描上次得到的结果,计算每个分组的均值.
3. 第三次扫描上次的结果,过滤掉平均工资低于5万的组。
这种理解是否正确?
另外,如果最后一句是:HAVING avg(salary)>50000, 是直接过滤第二次的结果,还是重复第二次扫描,计算均值,然后做判断?
1. 第一次扫描整张表格whatever,将不同的行按照jobcode的值是否相同归在一起。
2. 第二次扫描上次得到的结果,计算每个分组的均值.
3. 第三次扫描上次的结果,过滤掉平均工资低于5万的组。
这种理解是否正确?
另外,如果最后一句是:HAVING avg(salary)>50000, 是直接过滤第二次的结果,还是重复第二次扫描,计算均值,然后做判断?
代码:
SELECT jobcode, avg(salary) as x
FROM whatever
GROUP BY jobcode
HAVING x>50000;