一个非常奇怪的SQL查询

时间:2012-12-08 12:45:55

标签: sql

这些是以下列:

城市,名称,支付

Paris, Bob, 4       
Paris John, 6     
Tokio  Adam, 5    
Tokio Mike, 3

它应该返回

Paris, 10, bob 4
Paris 10, jogn 6
tokio 8 adam 5
tokio 8 mike 3

所以我想让City,Name,Payout列出City,SUM(支付),名字,支付。

我知道我可以在2个查询中执行此操作,但我认为通过一个查询让我的朋友感到惊讶会很有趣。

编辑:答案是:

SELECT 
    city, name, payout, SUM(payout) 
FROM 
    table 
GROUP BY 
    city, name 
ORDER BY 
    SUM(payout) DESC

1 个答案:

答案 0 :(得分:1)

如果您使用的RDBMS支持窗口函数,则可以使用一个SELECT(无子查询):

SELECT city, SUM(payout) OVER (PARTITION BY city) AS sum_per_city,
       name, payout
FROM tableX 
ORDER BY sum_per_city DESC 
       , name ASC ;