有沒有什麼辦法來枚舉postgresql中的查詢行?枚舉postgresql
我的表是這樣的:
Table players
id player_id game_id points
而且我想這樣的查詢:
SELECT game_id, <row_number in points group>, <array of ids>
FROM players WHERE game_id = %s
GROUP BY game_id, points;
有沒有什麼辦法來枚舉postgresql中的查詢行?枚舉postgresql
我的表是這樣的:
Table players
id player_id game_id points
而且我想這樣的查詢:
SELECT game_id, <row_number in points group>, <array of ids>
FROM players WHERE game_id = %s
GROUP BY game_id, points;
我不知道你問什麼。 「分組中的行號」是一個簡單的window function應用程序,但我不知道「id數組」是什麼意思。
給定的日期是這樣的:
id | player_id | game_id | points
----+-----------+---------+--------
1 | 1 | 1 | 0
2 | 1 | 2 | 1
3 | 1 | 3 | 5
4 | 2 | 1 | 1
5 | 2 | 2 | 0
6 | 2 | 3 | 0
7 | 3 | 1 | 2
8 | 3 | 2 | 3
9 | 3 | 3 | 1
你可以得到每場比賽的排名與此:
select game_id, player_id, points,
rank() over (partition by game_id order by points desc)
from players
這將會給喜歡這一點,你的輸出:
game_id | player_id | points | rank
---------+-----------+--------+------
1 | 3 | 2 | 1
1 | 2 | 1 | 2
1 | 1 | 0 | 3
2 | 3 | 3 | 1
2 | 1 | 1 | 2
2 | 2 | 0 | 3
3 | 1 | 5 | 1
3 | 3 | 1 | 2
3 | 2 | 0 | 3
就是這樣!你瞭解我。謝謝。 – 2012-02-07 08:53:28
@NikolayFominyh:很高興幫助,我也有熊爲鄰居,我必須從他們捍衛我的垃圾:) – 2012-02-07 10:23:06
這應該做你正在尋找的東西:
SELECT game_id
, row_number() OVER (PARTITION BY game_id ORDER BY points) AS num
, array_agg(id) AS ids
FROM players WHERE game_id = %s
GROUP BY game_id, points
ORDER BY game_id, points
這也很好。 – 2012-02-07 08:54:12
如果您想要答案,請添加一些示例數據(輸入和輸出)。目前還不清楚你想要什麼 – gbn 2012-02-07 08:05:45
期望的結果集不清楚。請指定<點組中的,或提供示例。 –
2012-02-07 08:07:07