Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Добавление столбца, использовав другую ужасную непонятную таблицу, по условиям / 1 сообщений из 1, страница 1 из 1
28.08.2020, 13:57
    #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
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Добавление столбца, использовав другую ужасную непонятную таблицу, по условиям / 1 сообщений из 1, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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