我有兩張桌子。如何使用COUNT計算兩列中出現的次數?
表1:由玩家的名字和他們的ID組成。表2:由兩個對手組成的對手組成,第一列包含冠軍和第二列輸家的名字。所以這意味着無論是參加那場比賽。
tournament=> select * from Matches;
id | winner | loser
----+--------+-------
1 | 1 | 2
2 | 3 | 4
3 | 5 | 6
4 | 7 | 8
(4 rows)
現在我想統計不同玩家所玩的比賽數量,我通過以下查詢計算了玩家贏得的比賽數量。
SELECT Players.id, COUNT(Matches.winner) AS Points FROM Players LEFT JOIN (SELECT * from Matches) AS Matches ON Players.id = Matches.winner GROUP by Players.id Order by Points desc, Players.id;
id | points
----+---
1 | 1
3 | 1
5 | 1
7 | 1
2 | 0
4 | 0
6 | 0
8 | 0
(8 rows)
但是我無法得到我應該如何計算每個球員的比賽數量的邏輯?
從上面的匹配表中我們可以看到每個玩家都玩過一次,但我無法在psql中寫入。
獲取錯誤: 'ERROR:列 「matches.winner」 必須出現在GROUP BY子句或在聚合中使用功能 線路2:選擇贏家AS ID,計數(*)從匹配的num numS ...' –
我更新了我的答案,請再次檢查它。 –
是的,它的工作可以請你解釋一下。 –