16_MySQL聚合函数的使用(重点,建议大家多动手操作)

 本节所涉及的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也就无法运行

那应该如何书写呢?请听下回分解……

原文地址:https://www.cnblogs.com/waterr/p/13955925.html