【发布时间】:2013-05-17 20:05:39
【问题描述】:
我有一个数据集,其中记录了用户在一段时间内的不同活动,因此我有多个用户在不同的日子有多个活动。
我正在寻找所有在 15 日和 16 日提交了事件 B 的用户,然后只想提取最后一次发生的事件 B,以防多个事件存在。
示例数据集:
User Event Event_Date Event_Time
==== ===== ========== =================================
1 A 15-May-13 15-MAY-13 05.46.20.000000000 AM
2 A 15-May-13 15-MAY-13 09.33.22.000000000 AM
3 A 15-May-13 15-MAY-13 09.47.50.000000000 AM
4 A 15-May-13 15-MAY-13 09.59.53.000000000 AM
5 A 15-May-13 15-MAY-13 10.12.25.000000000 AM
1 B 15-May-13 15-MAY-13 05.46.20.000000000 AM
1 B 15-May-13 15-MAY-13 09.33.22.000000000 AM
**1 B 15-May-13 15-MAY-13 09.47.50.000000000 AM**
**3 B 15-May-13 15-MAY-13 09.59.53.000000000 AM**
5 B 15-May-13 15-MAY-13 10.12.25.000000000 AM
**5 B 15-May-13 15-MAY-13 10.30.25.000000000 AM**
1 A 16-May-13 16-MAY-13 01.23.00.000000000 AM
1 B 16-May-13 16-MAY-13 01.28.35.000000000 AM
**1 B 16-May-13 16-MAY-13 01.28.43.000000000 AM**
3 A 16-May-13 16-MAY-13 08.38.06.000000000 PM
**3 B 16-May-13 16-MAY-13 12.05.53.000000000 AM**
4 A 16-May-13 16-MAY-13 12.21.57.000000000 AM
**4 B 16-May-13 16-MAY-13 05.21.57.000000000 PM**
结果集应如下所示,其中包含有事件 B 的所有用户、特定日期的最后一个事件的事件日期(如果事件有多个记录)和日期。
User Event Event_Date Event_Time
==== ===== ========== =================================
1 B 15-May-13
3 B 15-May-13
5 B 15-May-13
1 B 16-May-13
3 B 16-May-13
4 B 16-May-13
下面的查询给了我一天的正确结果,但是当我尝试一系列日期时,它只给出最近的事件。
select user, event, event_date, max(event_time)
from table_A where event = 'B'
and event_date = '15-May-13'
group by user, event, event_date
【问题讨论】:
-
您是否尝试从 where 子句中删除
and event_date ='15-May-13'?然后您将返回所有日期。当您使用日期范围时,您使用的查询是什么? -
你用的是什么数据库?
-
为什么要存储
event_date和event_time。event_time是一个时间戳,包含与event_date列相同的日期。对我来说似乎很多余。
标签: sql