【发布时间】:2022-01-10 17:33:41
【问题描述】:
我有一组点击流数据(即用户 ID、开始和结束日期/时间、有效使用时长、每个会话的总时长)。
我需要检索给定月份的唯一每日数据,按 user_id、日期和 webOrMobile 排序。
到目前为止,以 2019 年 1 月为例:
SELECT DISTINCT id, CONVERT(DATE, START_DTTM) AS date, WEB_VS_MOBILE_DISPLAY AS webOrMobile, ACTIVE_DURATION_SECONDS
FROM ClickStream
WHERE START_DTTM LIKE '2019-01-%'
ORDER BY id, START_DTTM, WEB_VS_MOBILE_DISPLAY
导致:
id date webOrMobile ACTIVE_DURATION_SECONDS
Z000013917 2019-01-07 Web 245
Z000013917 2019-01-10 Web 128
Z000013917 2019-01-29 Web 261
Z000013917 2019-01-31 Web 1246
Z0000140154 2019-01-18 Mobile 212
Z0000140154 2019-01-22 Mobile 18
Z0000140154 2019-01-23 Mobile 201
Z0000158605 2019-01-11 Web 67
Z0000158605 2019-01-11 Web 587
Z0000158605 2019-01-11 Web 681
Z0000158605 2019-01-11 Web 1123
Z0000158605 2019-01-13 Web 2896
Z0000158605 2019-01-14 Web 20
我的问题是日期为 2019-01-11 的行,除了持续时间之外,它们是相同的。如何将这些行组合成一行,其中包含各个持续时间的总和?所以像:
id date webOrMobile ACTIVE_DURATION_SECONDS
Z000013917 2019-01-07 Web 245
Z000013917 2019-01-10 Web 128
Z000013917 2019-01-29 Web 261
Z000013917 2019-01-31 Web 1246
Z0000140154 2019-01-18 Mobile 212
Z0000140154 2019-01-22 Mobile 18
Z0000140154 2019-01-23 Mobile 201
Z0000158605 2019-01-11 Web 2458
Z0000158605 2019-01-13 Web 2896
Z0000158605 2019-01-14 Web 20
现在每一行都有一个唯一的 id/date/webOrMobile。
编辑:我也试过了
SELECT pat_did, CONVERT(DATE, START_DTTM), WEB_VS_MOBILE_DISPLAY, SUM(MYC_ACTIVE_DURATION_SECONDS) FROM ClickStream
WHERE START_DTTM LIKE '2019-01-%'
GROUP BY pat_did, START_DTTM, WEB_VS_MOBILE_DISPLAY
导致:
id date webOrMobile ACTIVE_DURATION_SECONDS
Z000013917 2019-01-07 Web 4900
Z000013917 2019-01-10 Web 1536
Z000013917 2019-01-29 Web 3915
Z000013917 2019-01-31 Web 11214
Z0000140154 2019-01-18 Mobile 3392
Z0000140154 2019-01-22 Mobile 54
Z0000140154 2019-01-23 Mobile 1407
Z0000158605 2019-01-11 Web 24706
Z0000158605 2019-01-11 Web 5283
Z0000158605 2019-01-11 Web 12258
Z0000158605 2019-01-11 Web 469
Z0000158605 2019-01-13 Web 112944
Z0000158605 2019-01-14 Web 5746
行没有合并,但持续时间值现在太高了,例如 112944 等于 31 小时,这是不可能的。
【问题讨论】: