powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Использование циклов в запросе
2 сообщений из 2, страница 1 из 1
Использование циклов в запросе
    #38709115
Добрый день,

На основание определённых баз, операторы совершают звонки клиентам.
Если клиент берёт трубку и разговаривает с оператором, устанавливается статус "Закрыта". В случае, если не удаётся дозвониться до клиента устанавливается статус звонка "Перезвонить по недозвону" и формируется новая заявка на звонок, связанная с предыдущий через "id родительского звонка". Так происходит до 5 раз, далее устанавливается статус "Недозвон". Если в какой-то момент клиент взял трубку, но не смог разговаривать с оператором в данный момент устанавливается статус "Перезвонить позже" и счётчик звонков сбрасывается.

Задача: Написать запрос. Посчитать кол-во звонков клиентам, с момента последнего обнуления счётчика.

Думаю, тут надо воспользоваться циклами для подсчёта, но собственных знаний не хватает. Подскажите, как это реализовать?



Запрос
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT
	tc.id		"id клиента"
        ,tcb.id		"id базы звонков"
	,tcr.id		"id звонка"
        ,lcrs.name	"Статус звонка"
        ,tcr.parent_id	"id родительского звонка"

FROM	
	callcenter.tbl_cc_requests tcr
        LEFT JOIN callcenter.lst_cc_request_status lcrs	ON lcrs.id = tcr.status
        LEFT JOIN public.tbl_client_base tcb		ON tcb.id = tcr.client_base_id
        LEFT JOIN public.tbl_customer tc		ON tc.id = tcr.customer_id


Примерыid клиентаid базы звонковid звонкаСтатус звонкаid родительского звонка48215757449677Перезвонить по недозвонуNull48215757491324Перезвонить по недозвону744967748215757612194Закрыта7491324482176510895919ЗакрытаNull4821113314610230Перезвонить позжеNull4821113314824696Перезвонить по недозвону146102304821113315074651Перезвонить по недозвону148246964821113315136198Закрыта15074651

id клиентаid базы звонковid звонкаСтатус звонкаid родительского звонка48225767468359Перезвонить по недозвонуNull48225767791052Перезвонить позже746835948225768235759Перезвонить по недозвону779105248225768340476Перезвонить по недозвону823575948225768576553Перезвонить по недозвону834047648225768673559Недозвон857655348226759210561Перезвонить по недозвонуNull48226759276623Перезвонить по недозвону921056148226759335219Перезвонить по недозвону927662348226759357155Недозвон93352194822152219453227Перезвонить по недозвонуNull4822152219503473Перезвонить по недозвону194532274822152219618038Перезвонить по недозвону195034734822152219849156Недозвон19618038

С уважением,
Егоров Иван.
...
Рейтинг: 0 / 0
Использование циклов в запросе
    #38709178
/\/\/\/\/\/\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Егоров Иван,

Циклы не нужны. Совсем.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT DISTINCT ON (t1.customer_id)
  t1.*,
  (SELECT 
     COUNT(*)
   FROM callcenter.tbl_cc_requests t2
   WHERE t2.customer_id = t1.customer_id
     AND t2.id > t1.id -- здесь нужно сравнивать с датой события
  ) AS call_count
FROM callcenter.tbl_cc_requests t1
INNER JOIN callcenter.lst_cc_request_status lcrs t2 ON t2.id = t1.status
                                                   AND t2.name = 'Недозвон'
ORDER BY t1.customer_id, t1.id DESC, -- здесь нужно сортировать по дате события, если есть такое поле
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Использование циклов в запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]