我在SQL中有一个表,长这个样子:
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最常出现的值。在我的示例中,对于用户ID 0,最常见的值是6,而对于用户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