时间限制:1秒 空间限制:32768K 热度指数:45949
题目描述
查找薪水涨幅超过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`));
输入描述:
无
输出描述:
emp_no | t |
---|---|
10001 | 17 |
10004 | 16 |
10009 | 18 |
方法一:
这道题有这样几个地方需要注意下,首先如何统计薪水涨幅超过15次的员工,就是用的count(emp_no)这个方法直接计算的,注意用count这个统计出现次数的方法。
还有就是group by与order by有什么区别,order by就是排序。而group by就是分组,举个例子好说点,group by 单位名称
这样的运行结果就是以“单位名称”为分类标志统计各单位的职工人数和工资总额。
这样可以更好的分下类,更好看一些。
还有就是为什么没有用where而是用的having,记住下面的两句话就好了。
WHERE语句在GROUP BY语句之前;SQL会在分组之前计算WHERE语句。
HAVING语句在GROUP BY语句之后;SQL会在分组之后计算HAVING语句。
select emp_no,count(*) t from salaries
group by emp_no having t > 15
方法二:
select a.* from(
select emp_no,count(*) as t
from salaries
group by emp_no) as a
where t>15