如何排序
a 1 15
a 2 3
a 3 34
b 1 55
b 2 44
b 3 8
到(按第三列总和):
b 1 55
b 2 44
b 3 8
a 1 15
a 2 3
a 3 34
从 (55+44+8) > (15+3+34)
最佳答案
如果您使用的是 SQL Server/Oracle/Postgresql,您可以使用窗口化的 SUM
:
SELECT *
FROM tab
ORDER BY SUM(col3) OVER(PARTITION BY col) DESC, col2
输出:
╔═════╦══════╦══════╗
║ col ║ col2 ║ col3 ║
╠═════╬══════╬══════╣
║ b ║ 1 ║ 55 ║
║ b ║ 2 ║ 44 ║
║ b ║ 3 ║ 8 ║
║ a ║ 1 ║ 15 ║
║ a ║ 2 ║ 3 ║
║ a ║ 3 ║ 34 ║
╚═════╩══════╩══════╝
关于sql按子组总和数据排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35986246/