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

简介: SQL7 查找薪水记录超过15次的员工号emp_no以及其对应的记录次数t

简说Python,号主老表,Python终身学习者,数据分析爱好者,从18年开始分享Python知识,原创文章227篇,写过Python、SQL、Excel入门文章,也写过Web开发、数据分析文章,老表还总结整理了一份2022Python学习资料和电子书资源,关注后私信回复:2022 即可领取。

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

image.pngimage.png

我的思路: 在薪水表中根据员工编号分组,然后计算每个组内的数据条数,筛选出数据条数大于15的员工编号和对应的数据条数即可。

我的题解:

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

涉及知识点:

  • 聚合函数count()计数
  • 完整sql执行顺序(每天看一遍,不信记不住):
from -> where -> group by -> having -> select -> order by -> limit
  • group by 分组,having配合分组后筛选

提交结果:

image.png

其他题解学习:

image.png在这题的讨论里看到这样一条讨论,然后看了下这个讨论下的评论,大家讨论的点是这题想统计的员工薪资涨幅次数大于15次的数据,而不是薪资表中有15条以上记录的员工数据。

估计这题原本是统计salaries表中员工薪水涨幅次数大于15次的员工编号和涨幅次数,那我们顺着这个思维来思考下吧。

思路: 首先涨幅肯定是想统计正涨幅,即按时间相邻两次薪水差为正值,然后统计涨幅超过15次的员工编号

理论上感觉不存在,一般调薪少则一个季度一次,多则一年一次,能调薪15次以上,应该是元老级别了!所以这样一想,可能原本出题者就是想考下大家group by having,统计下薪水发放次数。

当然,既然遇到这种思维,我们就顺着去练一练。

本题其他题解来自讨论区的LeronTalks

image.png

select tmp.emp_no, count(tmp.whether) as t 
from ( select emp_no,
      ifnull(s1.salary > (select salary
                          from salaries as s2
                          where s1.from_date > s2.from_date
                          and s1.emp_no = s2.emp_no
                          order by s2.from_date desc 
                          limit 1),
             1) as whether
      from salaries as s1) as tmp
group by tmp.emp_no
having count(tmp.whether) > 15;

另外还有几个新增知识点:

  • 控制流函数ifnull(a,b),如果a为null或者0,则ifnull的值就为b,否则就为a;
  • count(null)为0。

这个评论很到位,学习、工作、生活中我们都应该多思考,而不是把自己困在既有的条条框框下,加油!

image.png

题目地址:https://www.nowcoder.com/ta/sql

相关文章
|
3月前
|
SQL
leetcode-SQL-176. 第二高的薪水
leetcode-SQL-176. 第二高的薪水
49 0
|
3月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_1 员工薪水中位数
「SQL面试题库」 No_1 员工薪水中位数
|
3月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_24 查询员工的累计薪水
「SQL面试题库」 No_24 查询员工的累计薪水
|
3月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_2 第N高的薪水
「SQL面试题库」 No_2 第N高的薪水
|
SQL 数据挖掘 Python
SQL3 查找当前薪水详情以及部门编号dept_no
SQL3 查找当前薪水详情以及部门编号dept_no
SQL3 查找当前薪水详情以及部门编号dept_no
【每日SQL打卡】​​​​​​​​​​​​​​​DAY 4丨员工薪水中位数【难度困难】
【每日SQL打卡】​​​​​​​​​​​​​​​DAY 4丨员工薪水中位数【难度困难】
|
27天前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
45 13
|
24天前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
22天前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
35 6
|
6天前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
37 0