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

1 запрос
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
select state,сотрудник
from(
select state, (select first_name || ' ' || left(last_name,1) ||'.' from users where id = ctt.user_id)  as "сотрудник"
from (
SELECT (regexp_matches(user_id, '(\d+)'))[1]::int user_id,
case 	when extract(epoch from(localtimestamp - (timestamp with time zone 'epoch' + extract('epoch' from last_request::interval) * interval '1 second')))/60 < 5 then '1'
		when extract(epoch from(localtimestamp - (timestamp with time zone 'epoch' + extract('epoch' from last_request::interval) * interval '1 second')))/60 >= 5 then '2'
		else '3' end as "state"
FROM crosstab(
	'SELECT session_id, data_key, data_value 
	 FROM sessions 
	 WHERE 
		data_key = ''UserID'' or 
		data_key = ''UserLastLoginTimestamp'' or
		data_key = ''UserLastRequest''
	 ORDER BY 1,2') 
	as ct (
	session_id varchar,
	user_id varchar,
	last_login varchar,
	last_request varchar)) as ctt
where user_id in (24,41,44,57,58,63,70,76,80,82,87,94,128)) as cttt


2 запрос
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
select сотрудник,"в работе",ожидающие,сегодня,today,месяц,month
from(
select 
	(select first_name || ' ' || left(last_name,1) ||'.' 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) and ticket_state_id not in (1,4,6)
group by user_id, service_id) as t
join service_coeff using (service_id)  
group by user_id)as tt


Есть платформа grafana я вставляю эти два запроса и он каким то чудом объединяет их, хочу понять как он делает это. (смотреть вложение)
Так же из первого запроса не все сотрудники выходят и из-за того их нету статус у них пустой, как нибудь можно вписать статус "3" где стоит пустое значение?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Объединение результирующих таблиц в одну?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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