[英]SQL query for fetching every first event (by datetime field) in day of a month
I have table like events
( id
, date
, event_name
, user_id
) and records like 我有类似
events
表( id
, date
, event_name
, user_id
)和类似记录
(1, '2013-12-01 08:30:00', 'login', 9),
(2, '2013-12-01 08:33:00', 'login', 4),
(3, '2013-12-01 10:22:00', 'logout', 9),
(4, '2013-12-02 08:34:00', 'login', 9),
...
I need to fetch every first event for each (or specified) user in a day for every days in a month. 我需要在一个月中的每一天中每天为每个(或指定的)用户获取每个第一个事件。 for ex:
例如:
2013-12-01 08:30:00, login, 9
2013-12-02 08:34:00, login, 0
...
Help me to construct properly SQL query 帮助我正确构建SQL查询
SELECT events.*
FROM
events INNER JOIN (SELECT user_id,
DATE(`date`) as day_event,
MIN(`date`) AS first_event
FROM events
GROUP BY
user_id,
DATE(`date`)) fe
ON events.user_id = fe.user_id
AND events.`date` = fe.first_event
Please see fiddle here . 请看这里的小提琴。
If you only want to return a month, you can put your condition in your subquery: 如果只想返回一个月,则可以将条件放入子查询中:
(SELECT user_id,
DATE(`date`) as day_event,
MIN(`date`) AS first_event
FROM events
WHERE `date` >= '2013-12-01' AND `date` < '2014-01-01'
GROUP BY
user_id,
DATE(`date`)) fe
Try this--- 尝试这个 - -
SELECT *
FROM events
WHERE id IN (SELECT min(id)
FROM events
GROUP BY user_id, date)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.