Объединения двух запросов в один
#39996587
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
|
|
|
Есть два запроса, как их объединить по столбцу "сотрудник" (они одинаковые)
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
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
|
|