[英]grouping by in postgres
在我的數據庫中有一個名為 game_id 的列,我想根據 game_id 的組對其他值求和。 但是我有一個問題,我有 game_id 1999 和 game_id 19999 它們的值不同但它是同一個游戲。 我正在尋找如何將這兩個 game_id 組合在一起的解決方案。
您可以將該值更改為所需的值,以使您的 groupby 語句按您的意願工作。
UPDATE table_name
SET game_id = 1999
WHERE game_id = 19999;
您可以使用 case when 和 temp 表
IF EXISTS(SELECT [name] FROM tempdb.sys.tables WHERE [name] like '#LocalTempTablo%')
BEGIN
DROP TABLE #LocalTempTablo;
END;
CREATE TABLE #LocalTempTablo
(
game_id int,
sumexample int
)
INSERT INTO #LocalTempTablo SELECT CASE WHEN game_id=1999 or game_id=19999 THEN 1999 ELSE 1999 END, SUM(sumexample) FROM games WHERE game_id=1999 or game_id=19999
GROUP BY game_id
SELECT game_id, SUM(sumexample) FROM #LocalTempTablo
GROUP BY game_id
如果這些是需要組合的特定游戲,您可以使用case
表達式:
select (case when game_id = 19999 then 1999 else game_id end) as imputed_game_id,
sum(score) -- or whatever
from t
group by imputed_game_id;
您還可以使用替換表來處理這個問題——也許直接內置在查詢中:
select coalesce(v.new_game_id, t.game_id) as imputed_game_id,
. . .
from t left join
(values (19999, 1999)
) v(game_id, new_game_id)
on t.game_id = v.game_id
group by imputed_game_id;
這對於替換多個game_id
很方便。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.