如何解决计算用户在平台上花费的时间
我正在尝试计算用户每周在平台上花费的时间。我有以下api_request_logs表(*注意:每行重复)
time user_id url
------------------------ ------- ----
January 6,2020,08:56 PM 14 api\v3\user1
January 6,08:58 PM 14 api\v3\session
January 6,08:59 PM 14 api\v3\notification
January 6,09:01 PM 14 api\v3\announcements
January 6,09:02 PM 14 api\v3\user2
January 6,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,12:00 AM
所需的输出:
Timespent users Time
---------- -------- -----
6 min 14 January 6,12:00 AM
我做错了什么,或者您有更好的主意吗?谢谢
解决方法
我认为您也只想按您的网址进行分组...请尝试以下:-)
#standardsql:
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,url
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,gr,url)
GROUP BY
2
ORDER BY
2 ASC
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。