我有一个同事在一个有"数量"列的桌子上工作.他们希望在同一查询中获得前5个金额和金额总和.
我知道你可以这样做:
SELECT TOP 5 amount FROM table
UNION SELECT SUM(amount) FROM table
ORDER BY amount DESC
Run Code Online (Sandbox Code Playgroud)
但这会产生如下结果:
1000 (sum)
100
70
50
30
20
Run Code Online (Sandbox Code Playgroud)
他们真正需要的是:
100 | 1000
70 | 1000
50 | 1000
30 | 1000
20 | 1000
Run Code Online (Sandbox Code Playgroud)
我实现这一目标的直观尝试往往会遇到分组问题,当您选择不同的列时,这不是一个问题,而是当您想要根据您选择的列使用聚合函数时.
小智 6
您可以使用CROSS JOIN:
SELECT TOP 5 a.amount, b.sum
FROM table a
CROSS JOIN (SELECT SUM(amount) sum FROM table) b
ORDER BY amount DESC
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11253 次 |
| 最近记录: |