我有一个包含以下字段的数据表
EventID : Int, AutoIncrement, Primary Key
EventType : Int ' Defines what happened
EventTimeStamp : DateTime ' When the Event Happened
UserID : Int ' Unique
查询需要告诉我整个集合中每天的新UserID发生了多少事件。因此,对于每一天,存在多少具有在任何前一天不存在的UserID的事件。我已经尝试了很多,而且我每天都可以获得独特的用户,但无法确定如何每天获得“新”用户。
答案 0 :(得分:1)
好问题。我没有一个确切的解决方案,但这是我以前见过的方法:
执行SELECT,将EventTimeStamp
与MIN(EventTimeStamp)
进行比较以获取给定的userID,由同一表上的嵌套SELECT语句确定,以计算每个ID的MIN时间戳(例如{{1 }})。
答案 1 :(得分:1)
Select count(EventId) from table
where
UserId
not in (select UserId from table where EventTimeStamp < now() - interval 1 day)
答案 2 :(得分:1)
首先获得每个用户初次到达时的表b
,
然后加入该表以获取当天该用户的所有事件。
SELECT DATE(a.EventTimeStamp), COUNT(*) FROM table a
JOIN
(SELECT MIN(EventTimeStamp) AS EventTimeStamp, UserID from table group by userID) b
ON a.UserID = b.UserID
AND DATE(a.EventTimeStamp) = DATE(b.EventTimeStamp)
GROUP BY DATE(a.EventTimeStamp)
答案 3 :(得分:1)
谢谢大家的帮助 - 我已经投了很多帮助。这是我做的:
我创建了这两个视图(我需要最终得到一个视图,并且必须创建2,因为它似乎无法在视图中嵌套select语句。)
目击:
select min(to_days(`Events`.TimeStamp)) AS Day0,
`Events`.TimeStamp AS TimeStamp,
`Events`.UserID AS UserID
from `Events` group by `Events`.UserID order by `Events`.UserID
newusers使用:
select count(distinct Sightings.UserID) AS Count,
date(Sightings.TimeStamp) AS Date from Sightings
group by date(Sightings.TimeStamp)
答案 4 :(得分:0)
86400-(EventTimeStamp)as new_users