7. 查找薪水记录超过15次的员工号emp_no以及其对应的记录次数t——group by、having 、with as

该博客介绍了如何使用SQL查询从薪水表中找出薪水记录超过15次的员工。通过示例建表语句和查询代码,解释了如何利用groupby和having子句来实现这一目标,同时提到了with as子句的用法,但表示环境不支持。最终提供的正确查询语句在Sqlite环境下运行成功,用例通过率100%。
摘要由CSDN通过智能技术生成

描述

有一个薪水表,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,以上例子输出如下:

 

提交代码:

select a.emp_no,count() as t from salaries a 
inner join salaries b 
on a.to_date = b.from_date
and a.emp_no = b.emp_no
where b.salary > a.salary
group by a.emp_no
having t > 15

用with as 

with a as (select * from salaries),
     b as (select * from salaries)
with inc as
(select b.emp_no,b.salary,b.from_date,b.to_date from a,b
 where a.to_date = b.from_date
 and a.salary < b.salary
 )
select emp_no,count(salary) as t 
from inc
where t > 15

都没通过,据说环境不支持

直接分组,用group by,通过

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

提交结果:答案正确 运行时间:15ms 占用内存:3324KB 使用语言:Sqlite 用例通过率:100.00%

注意group by 和having的用法,with as了解一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值