帮我查询一下。我需要以某种方式小组排,但我不知道。我们有一个表,里面有客户呼叫的数据,这个查询需要统计。
条件:一个人在某一日期范围内对同一项目进行多次呼叫。
表:
id id_person created_date
1 1 2019-01-01 10:10:10
2 1 2019-01-02 10:10:10
3 1 2019-01-02 10:15:10
4 1 2019-01-05 10:20:10
5 2 2019-01-01 10:10:10
6 2 2019-01-02 10:10:10
7 3 2019-01-02 10:15:10 例如,我们在3天内设置了gap参数
查询结果:
1 1 2019-01-01 10:10:10
4 1 2019-01-05 10:20:10
5 2 2019-01-01 10:10:10
7 3 2019-01-02 10:15:10 例如,我们在1天内设置了gap参数
查询结果:
1 1 2019-01-01 10:10:10
3 1 2019-01-02 10:15:10
4 1 2019-01-05 10:20:10
5 2 2019-01-01 10:10:10
7 3 2019-01-02 10:15:10 需要group by person_id并排除包含在row.created_date+gap中的行
发布于 2019-01-16 12:51:51
你的问题以前已经被问过了:
这个解决方案应该可以解决您的问题,并且您可以应用任何您想要的gap参数:Link
SELECT
id_person,
created_date,
DATEADD(DAY, NoGroup*3, '1999-01-01') AS [Gap Start],
DATEADD(DAY, NoGroup*3+2, '1999-01-01') AS [Gap End],
SUM(DPT)
FROM
(
SELECT
id_person,
created_date,
DATEDIFF(DAY, '1999-01-01', created_date) AS NoDays,
DATEDIFF(DAY, '1999-01-01', created_date)/3 AS NoGroup,
DPT
FROM your_table
) subquery
GROUP BY
id_person,
created_date;https://stackoverflow.com/questions/54210518
复制相似问题