SELECT с исключением нескольких строк после текущей строки по условию, связанному с данными в текущей строке - PullRequest
0 голосов
/ 16 января 2019

Помогите мне с запросом. Мне нужно как-то групповой ряд, но я не знаю. У нас есть таблица с данными о клиентских звонках и этот запрос нужен для статистики.

Состояние: несколько звонков от одного человека в определенном диапазоне дат в одном элементе.

Таблица:

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

1 Ответ

0 голосов
/ 16 января 2019

Ваш вопрос задавался ранее:

Это решение должно решить вашу проблему, и вы можете применить любой параметр разрыва, который вы хотите: Ссылка

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...