2016-11-18 53 views
0

我試圖讓兩列的總和PSQL爲什麼是我的兩列總和PSQL不正確的?

select id as id, name as name, count(winner_id) as winner_count, 
(count(winner_id) +count(loser_id)) as total_matches from player left join 
matches on matches.winner_id = player.id group by winner_id, player.name,player.id, 
matches.loser_id;") 

總比賽數應占總或winner_id和loser_id在比賽表。

但它是不正確。

它應該返回1場,比賽爲所有玩家,而是它返回了誰贏得了玩家2場和誰失去了球員0匹配。

+0

編輯你的問題,並提供樣本數據和預期的結果。 –

回答

1

count()計數的次數,一個值不NULL。所以,這兩個count()旨意可能返回相同的值。我懷疑你想是這樣的:

select id, name, 
     sum(case when id = winner_id then 1 else 0 end) as winner_count, 
     count(m.id) as total_matches 
from player p left join 
    matches m 
    on m.winner_id = p.id 
group by p.name, p.id; 
+0

謝謝!這與我所尋找的更接近。如果玩家只進入但還沒有過一配合,那麼就應該爲計數返回0,但我會嘗試修改自己。當它們有效時,它會讓我更接近。謝謝! – John

+0

@John。 。 。我問題是'total_matches',只需要修正正在計算的內容。 –

相關問題