帮助我进行查询。我需要某种方式的小组排,但我不知道。 我们有包含客户呼叫数据的表,该查询需要统计。
条件:一项内容中某个日期范围内一个人的多次通话。
表:
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天内设置了差距参数
查询结果:
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天内设置了差距参数
查询结果:
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
需要按person_id分组,但row.created_date + gap中包含的行除外
答案 0 :(得分:0)
您的问题已经被问过了
此解决方案应该可以解决您的问题,您可以应用所需的任何间隙参数: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;