【发布时间】:2020-08-13 10:32:43
【问题描述】:
我正在尝试计算用户每周在我的平台上花费的时间。我有以下 api_request_logs 表(*注意:每一行都是重复的)
time user_id url
------------------------ ------- ----
January 6,2020, 08:56 PM 14 api\v3\user1
January 6,2020, 08:58 PM 14 api\v3\session
January 6,2020, 08:59 PM 14 api\v3\notification
January 6,2020, 09:01 PM 14 api\v3\announcements
January 6,2020, 09:02 PM 14 api\v3\user2
January 6,2020, 09:28 PM 14 api\v3\session
[enter image description here][1]
我试过这个查询,但是,它似乎没有输出正确的计算。
select SUM(timespent) timespent, a.user_id as user
from (
select timestamp_diff(max(time),min(time),minute) timespent, DATE_TRUNC(EXTRACT(date from time), day) as Time, a.user_id as user
from (
select * , (countif (start) over (order by time)) as grp from (
select *, ifnull (lag(url) over(order by time), '') !=url as start from logs.api_request_logs a
INNER JOIN logs.cohort_members on a.user_id = cohort_members.user_id
INNER JOIN `logs.cohorts` on cohort_members.cohort_id = `logs.cohorts`.cohort_id
INNER Join logs.users on cohort_members.user_id = users.user_id
WHERE a.user_id = 14 and time > timestamp ('2020-01-01 00:00:00')
)) group by user, grp)
group by 2
order by 2 asc
当前输出:
timespent users Time
--------- ------- -----
32 min 14 January 6,2020, 12:00 AM
期望的输出:
Timespent users Time
---------- -------- -----
6 min 14 January 6,2020, 12:00 AM
我做错了什么或者你有更好的主意吗?谢谢
【问题讨论】:
-
(1)请说明计算;不清楚为什么您认为答案应该是“6”。 (2)“每一行都是重复的”是什么意思?
-
@GordonLinoff 1:用户每天或每周花费的总时间(以分钟为单位)。 2.每行重复10次以上。希望对你有帮助
-
@GordonLinoff:它应该是“6”,因为用户 (14) 在每一行花费一分钟。
-
。 .不,他们没有。根据问题中的数据,该用户在 URL“api\v3\user2”上花费了 26 分钟。
-
@GordonLinoff:我在我的问题中添加了一个快照,请看一下,让我知道你的想法? [1]:i.stack.imgur.com/gNR3b.png
标签: sql google-bigquery data-analysis metabase