Подсчет за тот же день DB2 - PullRequest
       18

Подсчет за тот же день DB2

1 голос
/ 09 апреля 2020

Может ли кто-нибудь помочь мне с ниже, любая помощь высоко ценится.

Мне нужно проверить, прошел ли номер счета через 3 или более раз только в тот же день.

Это базовая таблица:

| user_id  | account_no | zip   |      date |
|       1  |        123 | 55555 | 12-DEC-09 | 
|       2  |        123 | 66666 | 12-DEC-09 |
|       3  |        123 | 55555 | 13-DEC-09 |
|       4  |        456 | 77777 | 14-DEC-09 |
|       5  |        456 | 77777 | 14-DEC-09 |
|       6  |        456 | 77777 | 14-DEC-09 |
|       7  |        456 | 77777 | 15-DEC-09 |
|       8  |        789 | 88888 | 15-DEC-09 |
|       9  |        789 | 88888 | 15-DEC-09 |
|       10 |        789 | 88888 | 15-DEC-09 |
|       11 |        789 | 88888 | 16-DEC-09 |

Мне нужно ниже вывода, мне нужно проверить, прошел ли номер счета через 3 или более раз только в тот же день. Выход:

|       4  |        456 | 77777 | 14-DEC-09 |
|       5  |        456 | 77777 | 14-DEC-09 |
|       6  |        456 | 77777 | 14-DEC-09 |
|       8  |        789 | 88888 | 15-DEC-09 |
|       9  |        789 | 88888 | 15-DEC-09 |
|       10 |        789 | 88888 | 15-DEC-09 |

1 Ответ

1 голос
/ 09 апреля 2020

Для этого можно использовать оконные функции:

select user_id, account_no, zip, date
from (
    select t.*, count(*) over(partition by account_no, date) cnt
    from mytable t
) t
where cnt >= 3

В подзапросе оконная функция подсчитывает, сколько записей существует для одного и того же пользователя в один и тот же день. Осталось только отфильтровать это количество во внешнем запросе. Чтобы лучше понять, как это работает, вы можете сначала запустить подзапрос и посмотреть на столбец cnt в наборе результатов.

...