注意:第一个包含空,第二句不包含空
注意:第二句是错的,聚合函数不能出现在where中。
注意:相当于,按照分组属性,求出每个组的聚合函数值,所以肯定不能放单个属性有冲突
with rollup是最后一行的汇总效果
注意:虽然之前说过的单个个体不能和分组函数和聚合函数一起用,但是这里引出新方法,把满足的一组的所有个题,通过函数全部体现出来,就不会冲突.
这样是会报错的,改变处理方法如下。
HAVING子句:相当于先确定分组,然后再确定出每组应该满足的条件,符合的留下,不符合的剔除
注意:此时select语句中只能放入一个正常的字段,因为后面有聚合函数,1代表用此字段分组
优化:
总结:多个表之间的连接,三张表应该一个一个的加入,可以最后写SELECT,并且每次加入设置加入条件,因此这样写更清楚
SELECT e.empno,e.ename,d.dname,e.sal,e.job,s.grade
FROM t_emp e
JOIN t_dept d ON e.deptno=d.deptno
JOIN t_salgrade s ON e.sal BETWEEN s.losal AND S.hisal;
把一个聚合函数的运算结果的表进行与其他表进行表连接。
注意:
LEFT JOIN :保留左表
RIGHT JOIN :保留右表
JOIN :丢失不满足连接的记录
注意:any是只要有一条满足就行