数据示例:
id visiting_time
1 13.01.2001 02:34
1 14.01.2001 02:36
1 15.01.2001 02:36
1 16.01.2001 02:37
1 17.01.2001 02:38
1 18.01.2001 02:39
1 19.01.2001 02:40
2 13.01.2001 02:35
2 15.01.2001 02:36
2 16.01.2001 02:37
2 17.01.2001 02:38
2 18.01.2001 02:39
2 19.01.2001 02:40
我想吸引上周每天都在线的所有用户,例如从1月13日00:00到1月20日00:00。 对于我的数据样本,答案是:
id
1
答案 0 :(得分:1)
仅当visiting_time
列格式为YYYY-MM-DD HH:MM
时,以下代码才有效,否则日期不可比较:
SELECT t.id FROM (SELECT id, COUNT(DISTINCT substr(visiting_time, 1, 10)) AS counter From table1 WHERE ((visiting_time >= '2001-01-13 00:00' AND visiting_time < '2001-01-20 00:00')) GROUP BY id) AS t WHERE t.counter=7
答案 1 :(得分:1)
已考虑
最后一周的每天,从1月13日00:00到20 一月00:00
和
我自己指出。通常,我可以选择任意天数 想要。
我想它只能用作过滤器,因此任务是“在选定的时间间隔内每天查找用户在线
SELECT id,
count(DISTINCT toDate(visiting_time)) AS number_of_days_visited
FROM user_visits
WHERE visiting_time BETWEEN '2001-01-13 00:00:00' AND '2001-01-20 00:00:00'
GROUP BY id
HAVING number_of_days_visited =
round((toUInt32(toDateTime('2001-01-20 00:00:00')) - toUInt32(toDateTime('2001-01-13 00:00:00'))) / 60 / 60 / 24)
在HAVING中,我从WHERE过滤器计算了天数。