我有一张名为" alert"看起来像这样。
user_id event alert_type eventtime
1 clk s January, 19 2037 12:16:21
2 clk b January, 19 2037 00:28:25
3 clk b January, 19 2037 02:44:23
3 clk b January, 19 2037 00:16:25
1 clk b January, 19 2037 02:28:25
9 clk s January, 19 2037 22:40:25
9 clk s January, 19 2037 03:14:07
2 clk b January, 19 2037 03:22:07
6 clk b January, 19 2037 05:21:07
9 clk p January, 19 2037 15:24:07
3 clk p January, 19 2037 05:34:07
10 clk s January, 19 2037 12:39:07
4 clk b January, 19 2037 09:14:07
4 clk s January, 19 2037 09:34:07
1 clk s January, 19 2037 09:54:07
8 clk b January, 19 2037 13:14:07
8 clk p January, 19 2037 10:24:07
8 clk p January, 19 2037 13:45:07
10 clk b January, 19 2037 13:51:07
4 clk b January, 19 2037 14:14:07
12 clk p January, 19 2037 15:14:07
1 clk s January, 19 2037 00:44:07
10 clk s January, 19 2037 08:14:07
12 clk s January, 19 2037 16:24:07
7 clk p January, 19 2037 06:53:07
6 clk b January, 19 2037 20:14:07
7 clk b January, 19 2037 20:23:07
鉴于alert_type,我正在尝试计算在指定日期内有多少用户点击了警告作为第一次警报。
我想要的输出是
alert_type Count of Users
b 4
p 3
s 3
我试图这样做,但我没有得到我想要的
SELECT count(user_id) AS Count of Users, alert_type, MIN(eventtime)
FROM alerts
GROUP BY alert_type
ORDER BY alert_type DESC;
请提供一些输入以达到所需的输出。
答案 0 :(得分:2)
以下是一种在一天内获得每位用户第一次提醒的方法:
select alert_type, count(*) as `Total Number of Users`
from alerts a
where a.eventtime = (select min(a2.eventtime)
from alerts a2
where a2.user_id = a.user_id and
date(a2.eventtime) = date(a.eventtime)
)
group by alert_type;