mysql - SQL : I search the good query with select max() and select count()

标签 mysql sql select count max

我有一个名为arrived的表(这个表很简单,它只保存了在某天某时到达学校的用户),其中包含以下数据:

id  name    day         hour
1   Alice   Monday      11
2   Alice   Monday      13
3   Alice   Tuesday     11
4   Céline  Wednesday   14
5   Céline  Wednesday   13
6   Céline  Thursday    14
7   Maud    Friday      15
8   Maud    Saturday    15
9   Maud    Saturday    16

现在,我搜索为每个用户找到的好查询:最频繁的一天和最频繁的小时,也就是说,查询的结果必须返回以下行:

Alice   Monday      11
Céline  Wednesday   14
Maud    Saturday    15

=> 因为:

  • Alice 经常在星期一到达,而且经常在 11 点到达
  • Céline 经常在星期三到达,而且经常在 14 点到达
  • Maud 经常在周六到达,而且经常在 15 点到达

我的查询如下,但没有给我好的结果:

SELECT NAME,
       day,
       Max(count_hour)
FROM   (SELECT NAME,
               day,
               Count(hour) AS count_hour
        FROM   arrived
        GROUP  BY NAME,
                  day) AS alias_table
GROUP  BY NAME 

谢谢你,诚挚的。

最佳答案

不确定这样做是否正确,但应该可行!

SELECT *
FROM   arrived A
WHERE  hour = (SELECT hour
               FROM   arrived B
               WHERE  a.NAME = b.NAME
               GROUP  BY b.hour,
                         b.NAME
               ORDER  BY Count(b.hour) DESC Limit 1)
       AND day = (SELECT day
                  FROM   arrived B
                  WHERE  a.NAME = b.NAME
                  GROUP  BY b.day,
                            b.NAME
                  ORDER  BY Count(b.day) DESC Limit 1) 

SQLFIDDLE DEMO

关于mysql - SQL : I search the good query with select max() and select count(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28517087/

相关文章:

c++ - 使用单个文件描述符,select,poll和epoll和...之间是否有任何性能差异?

mysql - 用于存储可变长度字符串和二进制数据的最佳 MySql 数据类型

sql语句帮助

sql - rowid 插入 Oracle 后可以立即失效吗?

sql - 上一个星期五

Mysql 查询增强

安装 perl 包后,来自 Deb 的 MySQL 更改配置?

mysql - SQL 查询不显示空值

SQL:根据多个条件连接的目的/好处是什么?

sql - Oracle SUM 返回错误的摘要,其中包含从 SELECT UNION 返回的相同值