gpt4 book ai didi

SQL - session 计数和 session 之间的事务

转载 作者:可可西里 更新时间:2023-11-01 16:53:03 26 4
gpt4 key购买 nike

我正在尝试编写一个可以回答以下问题的 HiveQL(甚至是 ANSI SQL)查询:

我有一个包含事件(交易)的数据库,每个事件都存储有一个 user_id 和一个 trans_time(交易时间)。一个 user_id 可以有无限的事件,甚至可以有多个具有相同 trans_time 的事件。

如果我建立一个事件时间窗口(即 10 秒),那么有多少窗口在该窗口内有多少事件?我想结果会是这样的(显然没有文字,只有数字)...
100 个窗口只有 1 个事件
50 个窗口有 2 个事件
.
.
1 个窗口有 30 个事件

描述第一个结果...数据集中有 100 个实例,其中只有 1 个事件发生在 10 秒窗口内。

有没有办法从相同的数据中提取另一个指标,即50 个 user_ids 只有 1 个事件
25 个 user_ids 有 2 个事件
.
.
1 user_id 有 30 个事件

描述第一个结果...有 50 个 user_id 在 10 秒窗口内只有一个事件。

我希望这不是太模糊。一如既往,谢谢!!

最佳答案

如果您的窗口是静态的,例如:
窗口 1 - 12:00:00 - 12:00:09
窗口 2 - 12:00:10 - 12:00:19 等

你可以这样做:

-- this counts number of windows per with same number of events
select events_in_window,count(*) windows
from (
-- this counts events in each window
select window ,count(*) events_in_window
from (
-- this rounds all the transactions to windows
select user_id,from_unixtime(floor(unix_timestamp(trans_time)/10)*10) window
from table) a
group by window) b
group by events_in_window

注意 trans_time“四舍五入”中的“10”。您可以将其更改为您需要的任何大小的窗口。

关于SQL - session 计数和 session 之间的事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31096136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com