我在SQL表看起來像這樣:如何在每個ID組中選擇列中最頻繁的值?
user_id | data1
0 | 6
0 | 6
0 | 6
0 | 1
0 | 1
0 | 2
1 | 5
1 | 5
1 | 3
1 | 3
1 | 3
1 | 7
我想寫一個返回兩列的查詢:對於每個ID什麼是最頻繁出現的值的用戶ID的列,和列是。在我的例子中,USER_ID 0,最常見的值是6,和USER_ID 1,最常見的值是3。我希望它看起來象下面這樣:
user_id | most_frequent_value
0 | 6
1 | 3
我使用下面的查詢獲取最頻繁的值,但它對整個表運行並返回整個表的最常用值,而不是每個id。我需要添加什麼我的查詢才能讓它返回每個ID最頻繁的值?我想我需要使用子查詢,但我不確定如何構造它。
SELECT user_id, data1 AS most_frequent_value
FROM my_table
GROUP BY user_id, data1
ORDER BY COUNT(*) DESC LIMIT 1
怎麼樣畫? (即你在你的例子中增加了一個「(0,1)」行;然後'6'和'1'是最頻繁的值,因爲它們都發生3次)。 – pozs