如果时间戳有小时,则每天计算唯一值

axkjgtzd  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(2)|浏览(434)

我有数据集:

  1. timestamp event user
  2. 2020-04-28 20:07:55.503 log_in john
  3. 2020-04-28 20:08:01.996 log_out john
  4. 2020-04-28 20:08:02.470 log_in john
  5. 2020-04-28 20:08:03.996 log_out john
  6. 2020-04-28 20:08:05.729 log_failed john
  7. 2020-04-29 10:06:45.683 log_in mark
  8. 2020-04-29 10:08:58.299 password_change mark
  9. 2020-04-30 14:19:24.921 log_in jeff
  10. 2020-04-30 14:20:31.266 log_out jeff
  11. 2020-04-30 14:21:44.438 create_new_user jeff
  12. 2020-04-30 14:22:44.455 create_new_user jeff

如何编写sql查询来统计每天所有唯一的事件。我不清楚的是时间戳中的小时数。预期结果如下所示:

  1. timestamp count
  2. 2020-04-28 3
  3. 2020-04-29 2
  4. 2020-04-30 3
mitkmikd

mitkmikd1#

我认为clickhouse的语法是:

  1. select distinct toDate(timestamp), event
  2. from t;

编辑:
如果要计算事件数,请使用 count(distinct) :

  1. select toDate(timestamp), count(distinct event)
  2. from t
  3. group by toDate(timestamp);
nkhmeac6

nkhmeac62#

  1. create table xx(timestamp DateTime64(3), event String, user String) Engine=Memory;
  2. insert into xx values
  3. ('2020-04-28 20:07:55.503','log_in', 'john'),
  4. ('2020-04-28 20:08:01.996','log_out','john'),
  5. ('2020-04-28 20:08:02.470','log_in','john'),
  6. ('2020-04-28 20:08:03.996','log_out','john'),
  7. ('2020-04-28 20:08:05.729','log_failed','john'),
  8. ('2020-04-29 10:06:45.683','log_in','mark'),
  9. ('2020-04-29 10:08:58.299','password_change','mark'),
  10. ('2020-04-30 14:19:24.921','log_in','jeff'),
  11. ('2020-04-30 14:20:31.266','log_out','jeff'),
  12. ('2020-04-30 14:21:44.438','create_new_user','jeff'),
  13. ('2020-04-30 14:22:44.455','create_new_user','jeff')
  14. SELECT
  15. toDate(timestamp) AS d,
  16. uniq(event)
  17. FROM xx
  18. GROUP BY d
  19. ┌──────────d─┬─uniq(event)─┐
  20. 2020-04-28 3
  21. 2020-04-29 2
  22. 2020-04-30 3
  23. └────────────┴─────────────┘
展开查看全部

相关问题