计算在MySQL中单击不同事件的用户数

时间:2016-08-15 00:41:18

标签: mysql sql

我有一张名为" 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;

请提供一些输入以达到所需的输出。

1 个答案:

答案 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;