powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как сгруппировать 2 запроса
5 сообщений из 5, страница 1 из 1
как сгруппировать 2 запроса
    #39314264
fobster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть один запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
/*события в работе*/
select gr.name as "Группа", count(*)as "События в работе" from protocol_user_actions as p_u_a
inner join events e on p_u_a.ACTION=e.id
inner join accounts.users a on p_u_a.username=a.login
inner join accounts.groups_users gr_u on gr_u.user_id=a.id
inner join accounts.groups gr on gr_u.group_id=gr.id
where e.action='GUI_USER_ACCEPT'
GROUP BY gr.name

возвращающий
Группа|События в работе
Косино админы|149
Косино операторы|4
ЦОД админы|126

и есть второй запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
/*завершенные события*/
select gr.name as "Группа", count(*)as "Завершенные события" from protocol_user_actions as p_u_a
inner join events e on p_u_a.ACTION=e.id
inner join accounts.users a on p_u_a.username=a.login
inner join accounts.groups_users gr_u on gr_u.user_id=a.id
inner join accounts.groups gr on gr_u.group_id=gr.id
where e.action='GUI_USER_ACCEPT_FINISH'
GROUP BY gr.namу


возвращающий
Группа|Завершенные события
Косино операторы|2
ЦОД админы|2

Как объединить два запроса и получить:
Группа|События в работе|Завершенные события
Косино админы|149|0
Косино операторы|4|2
ЦОД админы|126| 2
...
Рейтинг: 0 / 0
как сгруппировать 2 запроса
    #39314286
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fobsterКак объединить два запросаЧерез джоин. Но в данном случае достаточно не "разъединять".
...
Рейтинг: 0 / 0
как сгруппировать 2 запроса
    #39314299
fobster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можете показать на примере?
...
Рейтинг: 0 / 0
как сгруппировать 2 запроса
    #39314307
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
select gr.name, e.action, count(*) from protocol_user_actions as p_u_a
inner join events e on p_u_a.ACTION=e.id
inner join accounts.users a on p_u_a.username=a.login
inner join accounts.groups_users gr_u on gr_u.user_id=a.id
inner join accounts.groups gr on gr_u.group_id=gr.id
where e.action in ('GUI_USER_ACCEPT', 'GUI_USER_ACCEPT_FINISH')
GROUP BY gr.name, e.action
...
Рейтинг: 0 / 0
как сгруппировать 2 запроса
    #39314395
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Postgresql 9.4 и выше
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select gr.name, 
count(*) filter(where e.action = 'GUI_USER_ACCEPT') as accept_count,
count(*) filter(where e.action = 'GUI_USER_ACCEPT_FINISH') as accept_finish_count,
 from protocol_user_actions as p_u_a
inner join events e on p_u_a.ACTION=e.id
inner join accounts.users a on p_u_a.username=a.login
inner join accounts.groups_users gr_u on gr_u.user_id=a.id
inner join accounts.groups gr on gr_u.group_id=gr.id
where e.action in ('GUI_USER_ACCEPT', 'GUI_USER_ACCEPT_FINISH')
GROUP BY gr.name



Для более старых версий можно как и раньше взять sum по результату case:
Код: sql
1.
sum(case e.action when 'GUI_USER_ACCEPT' then 1 else 0 end) AS accept_count,


filter просто более удобочитаем.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как сгруппировать 2 запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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