2012-12-08 103 views
-2

一個非常奇怪的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 

所以我想獲得城市,名稱,支付列出城市,SUM(支出),名稱,支出。

我知道我可以在2個查詢中做到這一點,但我認爲這樣做會讓我的朋友感到驚訝。

編輯:答案是這樣的:

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

可以隨時加入兩個查詢到一個... – Thilo

+0

...但仍然需要兩個查詢。而我甚至沒有看到一個...... – wildplasser

+0

其實,我明白了! SELECT city,name,payout,SUM(payout)FROM table GROUP BY city,name ORDER BY SUM(payout)DESC 謝謝:) – VixenSoul

回答

1

你可以用一個SELECT(無子查詢),如果你使用RDBMS支持窗口功能做:

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