本节所涉及的SQL语句
-- 聚合函数 SELECT AVG(sal+IFNULL(comm,0)) AS avg FROM t_emp; -- SUM SELECT SUM(sal) FROM t_emp WHERE deptno IN (10,20); -- MAX SELECT MAX(sal+IFNULL(comm,0)) AS max FROM t_emp WHERE deptno IN (10,20); SELECT MAX(LENGTH(ename)) AS max FROM t_emp WHERE deptno IN (10,20); -- MIN() -- AVG -- count SELECT COUNT(*) FROM t_emp; SELECT COUNT(comm) FROM t_emp; -- 查询10,20 部门中底薪超过2000并且工龄超过15年的员工人数 SELECT count(*) FROM t_emp WHERE deptno IN (10,20) AND sal>=2000 AND DATEDIFF(NOW(),hiredate)/365>=15; -- 查询1985年以后入职的员工,底薪超过公司平均底薪的员工数量 -- 错误示例 SELECT count(*) FROM t_emp WHERE sal>AVG(sal) AND hiredate>"1985-01-01"; -- 函数永远不能放在where中
注意:上面第二个问题的语句书写有问题,切记聚合函数一定不能出现在WHERE语句中,因为聚合函数的使用需要确定范围,WHERE是确定范围,在没有确定范围的前提下,聚合函数无法计算,所以WHERE也就无法运行
那应该如何书写呢?请听下回分解……