MySQL - 从子查询组中获取最大计数

马克

我有一个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 Fiddle:http ://sqlfiddle.com/#!9/e43a71/1

戈登·利诺夫

这是一个方法:

SELECT user_id, MAX(num) as max_num, 
       SUBSTRING_INDEX(GROUP_CONCAT(weekday ORDER BY num DESC), ',', 1) as weekday_max
FROM (SELECT user_id, weekday, COUNT(*) as num
      FROM logins l
      GROUP BY user_id, weekday
     ) uw
GROUP BY user_id;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章