【发布时间】:2016-02-25 22:24:52
【问题描述】:
所以我最近参加了一些更高级别的 SQL 问题的测试。我在 SQL 方面只有我认为的“中级”经验,而且我已经为此工作了一天左右。我就是想不通。
问题来了:
您有一个包含 4 列的表格:
EmployeeID int unique
EmployeeType int
EmployeeSalary int
Created date
目标:我需要为任何超过 1 个条目的 EmployeeType 检索最近两个 EmployeeSalary 之间的差异。它必须在一个语句中完成(嵌套查询很好)。
示例数据集:http://sqlfiddle.com/#!9/0dfc7
EmployeeID | EmployeeType | EmployeeSalary | Created
-----------|--------------|----------------|--------------------
1 | 53 | 50 | 2015-11-15 00:00:00
2 | 66 | 20 | 2014-11-11 04:20:23
3 | 66 | 30 | 2015-11-03 08:26:21
4 | 66 | 10 | 2013-11-02 11:32:47
5 | 78 | 70 | 2009-11-08 04:47:47
6 | 78 | 45 | 2006-11-01 04:42:55
所以对于这个数据集,正确的返回应该是:
EmployeeType | EmployeeSalary
-------------|---------------
66 | 10
78 | 25
10 来自于 EmployeeType 为 66 减去最新的两个 EmployeeSalary 值 (30 - 20)。25 来自于 EmployeeType 为 78 减去最新的两个 EmployeeSalary 值 (70-45)。我们完全跳过 EmployeeID 53,因为它只有一个值。
这个一直在破坏我的大脑。有什么线索吗?
谢谢!
【问题讨论】:
-
用数据创建一个 sqlfiddle
-
sqlfiddle.com/#!9/0dfc7 我想我做得对。感谢您的帮助!
-
你做到了。谢谢你。现在这是记录它的好方法。我相信你很快就会得到答复。如果没有,我很快就会回来