我擁有大量用戶的數據庫,記錄他們居住的地點以及他們登錄網站的次數。我正在尋找每個城市中最活躍的用戶。查詢從表格中的組中選出最高的10個值或最高的10%
我知道如何找到一個最活躍的用戶在每個城市:
select user_id, city, max(login_count)
from user
group by city
但是這將是能夠找到每個城市的10對最活躍的用戶來說非常實用。甚至更有用,但我認爲在SQL中可能不可能,在活動方面排名前10%。
如果有人可以提出如何完成這兩項任務或兩項任務的想法,我將不勝感激。
我正在使用Navicat連接到這個任務的MySQL服務器。
FWIW,**你當前的查詢可以返回壞的結果**。既然你也不會在'user_id'上進行分組,你得到的'user_id'可能與'max(login_count')有關,除了MySQL之外的其他RDBMS迫使你將所有非聚合分組。 – JNK 2011-04-14 19:11:20
你應該在這裏找到你的答案http://stackoverflow.com/questions/tagged/greatest-n-per-group+mysql – 2011-04-14 19:21:26
嗨JNK,非常感謝你的迴應 - 我完全不知道的東西。快速解釋你將如何改變查詢來避免這個問題?我也嘗試了通過user_id進行分組,但是結果很奇怪... – user708580 2011-04-22 09:06:11