【问题标题】:Count unique values per day, if timestamp has hours如果时间戳有小时数,则每天计算唯一值
【发布时间】:2020-08-13 17:30:57
【问题描述】:

我有数据集:

timestamp               event   user
2020-04-28 20:07:55.503 log_in  john
2020-04-28 20:08:01.996 log_out john
2020-04-28 20:08:02.470 log_in  john
2020-04-28 20:08:03.996 log_out john
2020-04-28 20:08:05.729 log_failed  john
2020-04-29 10:06:45.683 log_in  mark
2020-04-29 10:08:58.299 password_change mark
2020-04-30 14:19:24.921 log_in  jeff
2020-04-30 14:20:31.266 log_out jeff
2020-04-30 14:21:44.438 create_new_user jeff
2020-04-30 14:22:44.455 create_new_user jeff

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

timestamp  count       
2020-04-28 3 
2020-04-29 2
2020-04-30 3

【问题讨论】:

  • 这在很大程度上取决于特定的数据库。你用的是什么数据库?
  • @TheImpaler clickhouse
  • 我更新了问题,不正确
  • 不清楚您为什么在问题中包含user

标签: sql clickhouse


【解决方案1】:

我认为 Clickhouse 的语法是:

select distinct toDate(timestamp), event
from t;

编辑:

如果要统计事件,请使用count(distinct)

select toDate(timestamp), count(distinct event)
from t
group by toDate(timestamp);

【讨论】:

  • @edzedz 。 . .尽管我在这种情况下回答了问题,但在回答完问题后,您不应大幅更改问题。您的更改会使答案无效,这可能会导致投票失败 - 以及所有试图帮助您的人。最好提出一个新问题和良好的社区实践来接受您提出的问题的答案(即使这不是您打算提出的问题)。
【解决方案2】:
create table xx(timestamp DateTime64(3), event String, user String) Engine=Memory;
insert into xx values
('2020-04-28 20:07:55.503','log_in', 'john'),
('2020-04-28 20:08:01.996','log_out','john'),
('2020-04-28 20:08:02.470','log_in','john'),
('2020-04-28 20:08:03.996','log_out','john'),
('2020-04-28 20:08:05.729','log_failed','john'),
('2020-04-29 10:06:45.683','log_in','mark'),
('2020-04-29 10:08:58.299','password_change','mark'),
('2020-04-30 14:19:24.921','log_in','jeff'),
('2020-04-30 14:20:31.266','log_out','jeff'),
('2020-04-30 14:21:44.438','create_new_user','jeff'),
('2020-04-30 14:22:44.455','create_new_user','jeff')

SELECT
    toDate(timestamp) AS d,
    uniq(event)
FROM xx
GROUP BY d

┌──────────d─┬─uniq(event)─┐
│ 2020-04-28 │           3 │
│ 2020-04-29 │           2 │
│ 2020-04-30 │           3 │
└────────────┴─────────────┘

【讨论】:

    猜你喜欢
    • 2019-08-12
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多