我有一个表 logins
与以下架构:
| id | user_id | weekday |
|----|---------|---------|
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 2 |
...
工作日是0到6之间的数字 .
我希望得到哪个 weekday
具有最高计数,对于表中的每个 user_id
.
我尝试了以下查询:
SELECT MAX(num) as max_num, user_id, weekday
FROM (
SELECT COUNT(*) as num, user_id, weekday
FROM logins
GROUP BY user_id, weekday
) C
WHERE user_id = C.user_id AND num = C.num
GROUP BY user_id;
这让我 weekday = 1
而不是 2
. 我认为我不应该在这里使用 WHERE
条款,但我无法获得正确的结果 .
我检查了其他类似的问题但没有运气,例如:
我用我的例子创建了一个SQL小提琴:http://sqlfiddle.com/#!9/e43a71/1
2 回答
这是一个方法: