题目描述
查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
解决思路
SELECT emp_no,count(emp_no) as t from salaries group by emp_no having t > 15
- 用COUNT()函数和GROUP BY语句可以统计同一emp_no值的记录条数
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
HAVING语句通常与GROUP BY语句联合使用,用来过滤由GROUP BY语句返回的记录集。
HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。
- COUNT(*) 函数返回表中的记录数,不可用于WHERE语句中,故使用HAVING语句来限定t>15的条件
- 输出的涨幅次数为t,故用AS语句将COUNT(emp_no)的值转换为t