我陷入了一些問題。問題有兩個表,即黑客和挑戰。 這裏是架構:MySQL:根據指定的條件排除一些結果
Hackers(hacker_id: int, name string)
Challenges(challenge_id: int, hacker_id int)
我想編寫一個查詢打印hacker_id,名稱,以及每個學生帶來了挑戰總數。按降序排列挑戰總數。如果不止一名學生創建了相同數量的挑戰,則按hacker_id對結果進行排序。如果不止一名學生創造了相同數量的挑戰,並且計數小於創建的最大挑戰數量,則將這些學生排除在結果之外。
這裏是我的查詢:
select hackers.hacker_id ,
hackers.name ,
count(challenges.challenge_id) as challenges_created
from
hackers left join challenges
on
hackers.hacker_id = challenges.hacker_id
having
count(challenges_created) >= max(challenges_created)
order by challenges_created desc, hackers.hacker_id asc
我得到錯誤的輸出! 請告訴我我錯了!
樣品輸入:
Sample Output:
21283 Angela 6
88255 Patrick 5
96196 Lisa 1
'> = max'沒有什麼意義。根據定義,max()返回集合中的最大值,所以沒有其他任何值可能比這個值大。 –
那麼我應該如何排除那些數量大於2但小於最大值的條目(問題的最後一行) –
請至少作一個一致的句子:排序*您的*結果...:它看起來像一個學生練習。 – DenisGL