【发布时间】:2018-01-13 09:28:47
【问题描述】:
我有一个表logins,其架构如下:
| id | user_id | weekday |
|----|---------|---------|
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 2 |
...
工作日是一个从 0 到 6 的数字。
对于表中的每个user_id,我想知道哪个weekday 的计数最高。
我尝试了以下查询:
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 Fiddle:http://sqlfiddle.com/#!9/e43a71/1
【问题讨论】:
标签: mysql sql greatest-n-per-group