
输入:
| 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,88958,'2002-06-22','9999-01-01'); |
| INSERT INTO salaries VALUES(10002,72527,'2001-08-02','9999-01-01'); |
| INSERT INTO salaries VALUES(10003,43311,'2001-12-01','9999-01-01'); |
| INSERT INTO salaries VALUES(10004,72527,'2001-12-01','9999-01-01'); |
输出:
| 10001|88958|1 |
| 10002|72527|2 |
| 10004|72527|2 |
| 10003|43311|3 |
答案
| |
| SELECT s.emp_no,s.salary,ROW_NUMBER() over(ORDER BY s.salary DESC,s.emp_no desc) FROM salaries s; |
| |
| |
| SELECT s.emp_no,s.salary,IFNULL(temp.ranking,0)+1 FROM salaries s LEFT JOIN |
| (SELECT s1.emp_no,count(s2.salary) ranking FROM salaries s1,salaries s2 WHERE s1.salary <s2.salary GROUP BY s1.emp_no) temp |
| ON s.emp_no = temp.emp_no |
| ORDER BY IFNULL(temp.ranking,1)+1 asc |
| ; |
| |
| |
| SELECT s.emp_no,s.salary,temp.ranking FROM salaries s INNER JOIN |
| ( |
| SELECT t.salary,ROW_NUMBER() over(ORDER BY t.salary desc) ranking |
| FROM |
| (SELECT DISTINCT s.salary FROM salaries s) t |
| ) temp |
| ON s.salary = temp.salary |
| ORDER BY temp.ranking ASC,s.emp_no ASC |
统计salary的累计和running_total

答案
| |
| SELECT |
| s.emp_no, |
| s.salary, |
| SUM(s.salary) OVER (ORDER BY s.emp_no) running_total |
| FROM |
| salaries s |
| WHERE |
| s.to_date = '9999-01-01' |
| GROUP BY |
| s.emp_no; |
| |
| SELECT |
| s.emp_no, |
| s.salary, |
| (SELECT sum(salary) FROM salaries s1 WHERE s1.emp_no <= s.emp_no AND s1.to_date = '9999-01-01') running_total |
| FROM |
| salaries s |
| WHERE |
| s.to_date = '9999-01-01' |
| GROUP BY |
| s.emp_no; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律