列表

详情


SQL201. 查找薪水记录超过15条的员工号emp_no以及其对应的记录次数t

描述

有一个薪水表,salaries简况如下:
emp_no
salary
from_date
to_date
10001 60117 1986-06-26 1987-06-26
10001
62102
1987-06-26
1988-06-25
10001
66074 1988-06-25
1989-06-25
10001
66596 1989-06-25
1990-06-25
10001
66961 1990-06-25
1991-06-25
10001
71046 1991-06-25
1992-06-24
10001
74333 1992-06-24
1993-06-24
10001
75286 1993-06-24
1994-06-24
10001
75994 1994-06-24
1995-06-24
10001
76884 1995-06-24
1996-06-23
10001
80013 1996-06-23
1997-06-23
10001
81025 1997-06-23
1998-06-23
10001
81097 1998-06-23
1999-06-23
10001
84917 1999-06-23
2000-06-22
10001
85112 2000-06-22
2001-06-22
10001
85097 2001-06-22 2002-06-22
10002
72527 1996-08-03
1997-08-03

请你查找薪水记录超过15条的员工号emp_no以及其对应的记录次数t,以上例子输出如下:
emp_no t
10001 16

示例1

输入:

drop table if exists  `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`));
INSERT INTO salaries VALUES(10001,60117,'1986-06-26','1987-06-26');
INSERT INTO salaries VALUES(10001,62102,'1987-06-26','1988-06-25');
INSERT INTO salaries VALUES(10001,66074,'1988-06-25','1989-06-25');
INSERT INTO salaries VALUES(10001,66596,'1989-06-25','1990-06-25');
INSERT INTO salaries VALUES(10001,66961,'1990-06-25','1991-06-25');
INSERT INTO salaries VALUES(10001,71046,'1991-06-25','1992-06-24');
INSERT INTO salaries VALUES(10001,74333,'1992-06-24','1993-06-24');
INSERT INTO salaries VALUES(10001,75286,'1993-06-24','1994-06-24');
INSERT INTO salaries VALUES(10001,75994,'1994-06-24','1995-06-24');
INSERT INTO salaries VALUES(10001,76884,'1995-06-24','1996-06-23');
INSERT INTO salaries VALUES(10001,80013,'1996-06-23','1997-06-23');
INSERT INTO salaries VALUES(10001,81025,'1997-06-23','1998-06-23');
INSERT INTO salaries VALUES(10001,81097,'1998-06-23','1999-06-23');
INSERT INTO salaries VALUES(10001,84917,'1999-06-23','2000-06-22');
INSERT INTO salaries VALUES(10001,85112,'2000-06-22','2001-06-22');
INSERT INTO salaries VALUES(10001,85097,'2001-06-22','2002-06-22');
INSERT INTO salaries VALUES(10001,88958,'2002-06-22','9999-01-01');
INSERT INTO salaries VALUES(10002,72527,'1996-08-03','1997-08-03');

输出:

10001|17

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Sqlite 解法, 执行用时: 9ms, 内存消耗: 3376KB, 提交时间: 2021-08-09

select emp_no,count(salary) t  from salaries  group by emp_no 
having t>15;

Sqlite 解法, 执行用时: 10ms, 内存消耗: 3192KB, 提交时间: 2020-10-30

select emp_no, count(to_date) as t
from salaries
group by emp_no
having t > 15;

Sqlite 解法, 执行用时: 10ms, 内存消耗: 3236KB, 提交时间: 2021-08-03

select s.emp_no, count(s.emp_no) as t from salaries as s
group by s.emp_no
having t > 15

Sqlite 解法, 执行用时: 10ms, 内存消耗: 3240KB, 提交时间: 2021-09-01

SELECT emp_no,COUNT(salary) t FROM salaries GROUP BY emp_no HAVING t > 15 ;

Sqlite 解法, 执行用时: 10ms, 内存消耗: 3240KB, 提交时间: 2021-07-21

select s.emp_no, count(*) as c from salaries s group by s.emp_no having c > 15

上一题