[英]SELECT COUNT() INSIDE A SELECT MAX() SQL
我在數據庫中有一個名為player_mast
表(數據只是一個例子),我想找到為 2016 年歐洲杯提供最多球員的俱樂部。
玩家 ID | country_id | 球衣號碼 | 參賽者姓名 | posi_to_play | dt_of_bir | 年齡 | play_club |
---|---|---|---|---|---|---|---|
1231 | 1231 | 10 | 冒險 | 前鋒 | 2/3/1991 | 33 | 切爾西 |
為什么這個查詢不起作用? 在我看來是正確的:
SELECT playing_club, MAX(NumberOfPlayerForTeam)
FROM (
SELECT playing_club, COUNT(player_id) AS NumberOfPlayerForTeam
FROM player_mast
GROUP BY(playing_club))
GROUP BY(playing_club);
試試這個
SELECT playing_club, NumberOfPlayerForTeam<br>
FROM (<br>
SELECT playing_club, COUNT(player_id) AS NumberOfPlayerForTeam<br>
FROM player_mast<br>
GROUP BY(playing_club))<br>
ORDER BY NumberOfPlayerForTeam DESC LIMIT 1;
如果您想要表格中行數最多的俱樂部,您可以使用rank()
:
SELECT pm.*
FROM (SELECT playing_club, COUNT(*) AS NumberOfPlayerForTeam,
RANK() OVER (ORDER BY COUNT(*) DESC) as seqnum
FROM player_mast
GROUP BY playing_club
) pm
WHERE seqnum = 1;
筆記:
COUNT(<column name>)
計算COUNT(<column name>)
中非NULL
值的數量。 不需要做這個額外的檢查; COUNT(*)
做你想要的。GROUP BY
鍵周圍不需要括號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.