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

Есть запрос, который корректно работает, он ниже. Появилась необходимость добавить еще столбец с информацией, которая якобы будет отображать статус сотрудника (онлайн, отошел и вообще нету).

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
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 order by 1 asc, 3 asc, 7 desc


Есть таблица сессий, она очень не удобная. Так как состоит из 4х столбцов и из кучи параметров, которые можно было бы распределить по столбцам.
В ней есть 3 параметра необходимых для определения статуса в столбце data_key строки UserLastRequest, UserLastLoginTimestamp или UserLastLogin и UserID.
Попытался добавить такое между столбцами результатов(ниже запрос), но выводит нул, я понимаю что у меня условие одно по которому он ищет, а я хочу вывести другое из того же столбца, так же нужно как то сгруппировать по session_id, чтобы он различал сотрудников.

Код: plsql
1.
(select data_value from sessions where data_key='UserID' and data_value = t.user_id::char) as "Статус",


чтобы определить статусы еще условия нужны.

Статус 1 если (время сейчас-время последнего входа)<60 и (время сейчас-время последнего действия)<5
Статус 2 если (время сейчас-время последнего входа)<60 и (время сейчас-время последнего действия)>=5
Статус 3 если (время сейчас-время последнего входа)>=60

Попробую показать запросом для статуса 1
Код: plsql
1.
2.
3.
(extract(epoch from(localtimestamp - data_value (которая находится в столбце data_key строка UserLastLoginTimestamp))) /60) < 60  
и 
(extract(epoch from(localtimestamp - data_value (которая находится в столбце data_key строка UserLastRequest))) /60)<5 


Вот я не могу понять как это все организовать, чтобы все заработало одним запросом, так как есть необходимость переводить результат на монитор с рефрешом результатов.
Если кто хочет помочь за вознаграждение, пишите на почту eduard186@mail.ru.
Так же прикрепляю скрин таблички сессии для одного сотрудника, чтобы было понятно что происходит)
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Добавление столбца, использовав другую ужасную непонятную таблицу, по условиям
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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