AIGC ChatGPT4完成业务需求SQL学习

源表如下:

例如现在需要显示每个岗位中工资排名前10位的员工信息,并显示排名应该要怎么做呢?

Prompt: 有一个某公司职员表,表名为Bank_emp,empno为员工编号,ename为员工姓名,JOB为员工岗位,sal为工资,dept为部门,
请写出一个SQL语句来查询每个岗位下工资排名前10位的员工信息,显示员工编号,姓名,岗位,工资,部门,排名?

这个问题同样可以使用窗口函数ROW_NUMBER()RANK()DENSE_RANK()来解决。以下是使用ROW_NUMBER()的SQL语句:

sql复制代码

WITH ranked_employees AS ( SELECT empno, ename, JOB, sal, dept, ROW_NUMBER() OVER(PARTITION BY JOB ORDER BY sal DESC) as rank FROM Bank_emp ) SELECT empno, ename, JOB, sal, dept, rank FROM ranked_employees WHERE rank <= 10;

在这个查询中,我们先在ranked_employees的CTE中,为每个岗位的每个员工分配一个基于其工资降序排列的排名。然后,在主查询中,我们只选择每个岗位的排名在前10位的员工。

注意,如果你想在同一岗位、同一工资下有多个员工共享同一排名,可以使用RANK()DENSE_RANK()代替ROW_NUMBER()

将SQL复制到Navicat中进行测试;

将每个部门每个岗位下前10名的员工信息显示出来了。

接下来我们继续完成其它需求

例如 : 要显示工资大于整个人力资源部门的员工信息,要怎么实现呢?

Prompt : 有一个某公司职员表,表名为Bank_emp,empno为员工编号,ename为员工姓名,JOB为员工岗位,sal为工资,dept为部门,
请写出一个SQL语句来查询工资大于所有人力资源部的员工信息,显示员工编号,姓名,岗位,工资,部门?

要查询工资大于所有人力资源部员工的员工信息,您可以使用下列SQL语句。它首先在子查询中找到人力资源部的最高工资,然后在主查询中查找工资高于这个值的所有员工。

sql复制代码

SELECT empno, ename, JOB, sal, dept FROM Bank_emp WHERE sal > ( SELECT MAX(sal) FROM Bank_emp WHERE dept = '人力资源部' );

在这个查询中,“SELECT MAX(sal) FROM Bank_emp WHERE dept = '人力资源部'”是一个子查询,它会返回人力资源部的最高工资。然后,主查询将找出工资大于这个值的所有员工。请注意,这个语句假设'dept'列包含部门名称,如'人力资源部'。如果您的表结构不同,可能需要稍微修改这个查询以适应您的需求。

将SQL复制到Navicat中进行测试;

接下来我们完成下一个实例:

例如要显示每个岗位中工资最高的员工信息

Prompt: 有一个某公司职员表,表名为 Bank_emp,empno 为员工编号,ename为员工姓名,JOB为员工岗位,sal为工资,dept为部门,
请写出一个SQL语句来查询每个岗位下工资最高的员工信息,显示员工编号,姓名,岗位,工资,部门?

要查询每个岗位下工资最高的员工信息,可以使用窗口函数ROW_NUMBER()配合OVER()子句。假设同一岗位、同一工资下只有一个员工,SQL语句如下:

sql复制代码

WITH ranked_employees AS ( SELECT empno, ename, JOB, sal, dept, ROW_NUMBER() OVER(PARTITION BY JOB ORDER BY sal DESC) as rank FROM Bank_emp ) SELECT empno, ename, JOB, sal, dept FROM ranked_employees WHERE rank = 1;

这个查询首先在ranked_employees的CTE (Common Table Expressions,即公用表表达式) 中,为每个岗位的每个员工分配一个基于其工资降序排列的排名。然后,在主查询中,我们只选择每个岗位的排名为1(即工资最高)的员工。

如果同一岗位、同一工资下可能有多个员工,可以使用RANK()DENSE_RANK()代替ROW_NUMBER(),这样会为具有相同工资的员工分配相同的排名。

将SQL复制到Navicat中进行测试;

每个岗位工资最高的员工信息显示出来了。

更多精彩内容:

AIGC ChatGPT 职场案例
AI 绘画 与 短视频制作
PowerBI 商业智能 68集
数据库Mysql 8.0  54集
数据库Oracle 21C 142集
Office 2021实战应用
Python 数据分析实战,
ETL Informatica 数据仓库案例实战
Excel 2021实操 100集,
Excel 2021函数大全 80集
Excel 2021高级图表应用89集,
Excel 2021大屏可视化制作 56集
Excel 2021实用技巧300集
PPT 2021 商业汇报实战应用69集
数据分析可视化Tableau 80集
数据可视化FineReport 50集
送你各类文档模板PPT,表格,大屏可视化 超过5000+模板
案例实战 https://edu.csdn.net/combo/detail/2552

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿里数据专家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值