SQL-запрос: как спроецировать счетчик за последний день, последнюю неделю, последний месяц, последний год в одном запросе? - PullRequest
0 голосов
/ 08 ноября 2019

Мое требование - проецировать количество записей по типу (т. Е. Типу запроса в моем приложении) по последним дням, последним неделям, последним месяцам, последним годам.

Я пытаюсь выполнить 4 запроса, чтобы получить эти данные.

Можно ли выполнить один запрос? Я реализую тот же запрос в моей аннотации запроса JPA.

1 Ответ

0 голосов
/ 08 ноября 2019

Если вам нужна последняя неделя, последний месяц, последний год по сравнению с текущей датой, вы можете сделать это с помощью условной агрегации в Oracle:

Select sum(case when trunc(date_col) = trunc(sysdate-1) then 1 end) as last_one_day,
sum(case when trunc(date_col) between trunc(sysdate-7) and trunc(sysdate-1) then 1 end) as last_one_week,
sum(case when trunc(date_col) between trunc(add_months(sysdate,-1)) and trunc(sysdate-1) then 1 end) as last_one_month,
sum(case when trunc(date_col) between trunc(add_months(sysdate,-12)) and trunc(sysdate-1) then 1 end) as last_one_year
From your_table
Where type = ...

Cheers !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...