描述
有一个薪水表,salaries简况如下:
建表语句如下:
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
));
请你查找薪水记录超过15次的员工号emp_no以及其对应的记录次数t,以上例子输出如下:
思路:
1.统计一个员工的薪水涨幅次数,使用count() 函数,count(emp_no)。
2.然后显示出来的答案是次数 > 15,因为count() 不能与where 共同出现,所以使用having
3.答案显示是以每个员工作为单位,所以使用group by 合并同一类。
select emp_no,count(emp_no) t
from salaries
group by emp_no
having t > 15;
关于where,having,还有group by 的位置:
WHERE语句在GROUP BY语句之前;SQL会在分组之前计算WHERE语句。
HAVING语句在GROUP BY语句之后;SQL会在分组之后计算HAVING语句。