AIGC ChatGPT4完成业务需求SQL学习

源表如下:

AIGC ChatGPT4完成业务需求SQL学习_第1张图片

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

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

AIGC ChatGPT4完成业务需求SQL学习_第2张图片

这个问题同样可以使用窗口函数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中进行测试;

AIGC ChatGPT4完成业务需求SQL学习_第3张图片

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

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

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

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

AIGC ChatGPT4完成业务需求SQL学习_第4张图片

要查询工资大于所有人力资源部员工的员工信息,您可以使用下列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中进行测试;

AIGC ChatGPT4完成业务需求SQL学习_第5张图片

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

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

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

AIGC ChatGPT4完成业务需求SQL学习_第6张图片

要查询每个岗位下工资最高的员工信息,可以使用窗口函数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 ChatGPT4完成业务需求SQL学习_第7张图片

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

更多精彩内容:

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

你可能感兴趣的:(AIGC,学习,chatgpt,excel,mysql,数据库,sql)