SQL :我用 select max() 和 select count() 搜索好的查询
SQL : I search the good query with select max() and select count()
我有一个table叫arrived(这个table很简单,就是把当天到校的用户保存起来这样的小时)具有以下数据:
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
现在,我搜索为每个用户找到的好查询:最频繁的一天和最频繁的小时,也就是说,查询的结果必须return这一行:
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
衷心感谢。
选择列时尝试greatest(day, hour)
。您也可以尝试 greatest(max(day), max(hour))
干杯!
不确定这样做是否正确,但应该可行!
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)
我有一个table叫arrived(这个table很简单,就是把当天到校的用户保存起来这样的小时)具有以下数据:
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
现在,我搜索为每个用户找到的好查询:最频繁的一天和最频繁的小时,也就是说,查询的结果必须return这一行:
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
衷心感谢。
选择列时尝试greatest(day, hour)
。您也可以尝试 greatest(max(day), max(hour))
干杯!
不确定这样做是否正确,但应该可行!
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)