powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вывести список клиентов по которым с момента последней закрытой задачи прошло более n дней
4 сообщений из 4, страница 1 из 1
Вывести список клиентов по которым с момента последней закрытой задачи прошло более n дней
    #39884276
roman2021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищи прошу помочь с написанием запроса.

Есть две таблицы клиенты и задачи по этим клиентам. У клиента может быть много задач.
Нужно вывести всех клиентов у которых либо вообще нет задач или задачи есть, но с момента последней закрытой задачи прошло более 60 дней.

Все что смог изобразить:
Код: sql
1.
2.
3.
4.
5.
SELECT DISTINCT ON (account.name)  account.name,activ.datefinish, account.* 
FROM sys_accounts account 
INNER JOIN sys_activities activ ON account.guid = activ.account_guid 
WHERE  activ.datefinish IS NOT NULL 
AND (extract(day from now() - activ.datefinish))>60



Но этот запрос не правильно он не показывает клиентов без задач, он не правильно учитывает разницу т.к не считает разницу в днях именно последней закрытой задачи в контексте клиента.
...
Рейтинг: 0 / 0
Вывести список клиентов по которым с момента последней закрытой задачи прошло более n дней
    #39884290
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roman2021,

Код: sql
1.
select ... from accounts where not exists(select from activities where datefinish > now() - interval '60 days' and account.guid = activities.account_guid)
...
Рейтинг: 0 / 0
Вывести список клиентов по которым с момента последней закрытой задачи прошло более n дней
    #39884352
roman2021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij, спсб

Сделал так:

Код: sql
1.
2.
3.
select name from sys_accounts account
where not exists(select from sys_activities activity where activity.datefinish > now() - interval '60 days' 
				  and account.guid = activity.account_guid)



Но запрос как то не так реагирует на activity.datefinish > now() - interval '60 days'


Вот так получается найти только, клиентов у которых нет задач
Код: sql
1.
2.
3.
select name from sys_accounts account
where not exists(select from sys_activities activity where 
				  account.guid = activity.account_guid)
...
Рейтинг: 0 / 0
Вывести список клиентов по которым с момента последней закрытой задачи прошло более n дней
    #39884420
roman2021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT name from sys_accounts account
where 
exists(
	SELECT DISTINCT ON (activ.account_guid) activ.account_guid, activ.datefinish FROM sys_activities activ 
	WHERE activ.datefinish IS NOT NULL AND  (extract(day from now() - activ.datefinish))>=60
	ORDER BY activ.account_guid,activ.datefinish DESC
)
AND
not exists(
select from sys_activities activity where 
				  account.guid = activity.account_guid
)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вывести список клиентов по которым с момента последней закрытой задачи прошло более n дней
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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