@Malkolm163

Как правильно собрать данные из БД?

Короче условия такие - есть таблицы (естественно со стандартными полями для связи):
1. Список статусов
2. список заявок (среди которых есть поле в которое записан текущий статус)
3. история - каждый раз при изменении статуса записывается дата/время и новый статус

задача:
надо выбрать из всего этого многообразия информацию о том сколько у меня было заявок в том или ином статусе, например за период в 30 дней с разбивкой по дням.

Если я сделаю выборку например вот так:
select
    "STATUS_ID",
    count(*) as CNT,
    to_char("DATE",'YYYY-MM-DD') as DatePartChar
from ams_cs_request_history
where "STATUS_ID" in (17,18,20,21,22,23)
and "DATE" > '2022-08-01'::date
and "DATE" < '2022-09-01'::date

group by "STATUS_ID", DatePartChar
limit 100;

то я смогу получить информацию только о том сколько заявок у меня в этот статус перешло, но не будет включать в себя сколько оставалось с предыдущего временного отрезка или вообще за пределами периода выборки.
Например при такой выборке, если заявка создана 2022-07-30, и перешла скажем в 17 статус на момент начала выборки (2022-08-01), а например 2022-08-03 перешла на 18 статус, то в счетчик попадет 18 статус, а 17 вроде как останется за бортом.
Помогите подобрать алгоритм выборки (можно и в 2-3 отдельных запроса), чтобы получить информацию с полной картиной.
Заранее благодарю))
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы