给定特定值的 SUM,我想订购成对(或 3,4 组等)行。
根据姓名+姓氏+年龄的串联,行是连续的
为了更好地理解给出下表:
ID Name Surname Age Salary
------------------------------
1 John Smith 30 2
2 John Smith 30 10
3 Rick James 22 300
4 Rick James 22 1000
5 Rick James 22 5
6 Mike Brown 50 200
7 Mike Brown 50 20
我想要一个最终表,它应该按每个 Name+Surname+Age 的 Salary 总和排序 DESC,并且尽管 ID 列不同,但保持具有相同 Name+Surname+Age 的行彼此相邻。这将是预期的结果:
ID Name Surname Age Salary
------------------------------
3 Rick James 22 300
4 Rick James 22 1000
5 Rick James 22 5
6 Mike Brown 50 200
7 Mike Brown 50 20
1 John Smith 30 2
2 John Smith 30 10
如您所见,Name+Surname+Age = "Rick Jams 22"的行位于顶部,因为它们的总和为 1305,其次是 "Mike Brown 50"(sum = 220) 和 "John Smith 30"(sum = 12)。
此外,结果表中的行数必须相同。
如何使用 Oracle SQL 做到这一点?
谢谢你的帮助
最佳答案
SELECT t.*,
COALESCE(SUM(salary) OVER (PARTITION BY name, surname, age), 0) ss
FROM mytable t
ORDER BY
ss DESC
关于sql - 给定一列的总和,对行对/三元组进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36599254/