powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Объединения двух запросов в один
1 сообщений из 1, страница 1 из 1
Объединения двух запросов в один
    #39996587
DeLipFin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть два запроса, как их объединить по столбцу "сотрудник" (они одинаковые)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select  state, user_id as сотрудник
from (select distinct on (user_id)(select first_name || ' ' || last_name from users where id = ctt.user_id)user_id, 
(select case 	when extract(epoch from(localtimestamp - users_state.dom))/60 between 240 and 300 then '3'
		when extract(epoch from(localtimestamp - users_state.dom))/60 not between 0 and 540 then '4'
 		when extract(epoch from(localtimestamp - last_request))/60 < 10 then '1'
		when extract(epoch from(localtimestamp - last_request))/60 > 10 then '2'
		end from users_state where users_state.user_id = ctt.user_id) as state
from (select (regexp_matches(user_id, '(\d+)'))[1]::int user_id,	
		timestamp with time zone 'epoch' + extract('epoch' from last_request::interval) * interval '1 second' last_request
from crosstab(	'SELECT session_id, data_key, data_value FROM sessions 
	 	WHERE data_key = ''UserID'' or data_key = ''UserLastRequest''
		ORDER BY 1,2')ct (session_id varchar, user_id varchar, last_request varchar) order by 1,2)ctt 
where user_id in (24,41,44,57,58,63,70,76,80,82,87,94,128,130,131,132,133))cttt


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select сотрудник, "в работе", ожидающие, сегодня, today, месяц, month
from(select	(select first_name || ' ' || last_name from users where id = t.user_id)  as сотрудник,
	(select count(*) from ticket where responsible_user_id = t.user_id and ticket_state_id in (1,4)) as "в работе",
	(select count(*) from ticket where responsible_user_id = t.user_id and ticket_state_id in (6,10)) as ожидающие,
  	sum(cnt_day) as сегодня, sum(cnt_day * coeff) as today, sum(cnt_month) as месяц, sum(cnt_month * coeff) as month
from 	(select user_id, service_id, count(*) filter (where change_time >= current_date) as cnt_day, 
    	count(*) filter (where change_time >= date_trunc('month', current_date)) as cnt_month
from ticket where user_id in (24,41,44,57,58,63,70,76,80,82,87,94,128,130,131,132,133) and ticket_state_id not in (1,4,6)
group by user_id, service_id)t
join service_coeff using (service_id)  
group by user_id)tt
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Объединения двух запросов в один
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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