powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Проблема с SQL
9 сообщений из 9, страница 1 из 1
Проблема с SQL
    #32468555
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет. Проблема в следующем:
Есть таблица, в которой содержатся данные о сотрудниках:
Код: plaintext
1.
2.
3.
4.
5.
6.
id|full_name|national|sex
 1  |Ivanov   | rus     | true
 1  |Sidorov  | rus     | true
 1  |Kim        | kor     | true
 1  |Petrova  | rus     | false
 1  |Borisova | rus     | false

true- мужской пол, false соответственно женский.

Нужно написать запрос который бы выводил количество МУЖ и ЖЕН поля для соответсвующей национальности.
Примерно такой запрос выдает слудеющий результат
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select 
	national, 
	case when sex=true then count(id) else  0  end as Male,	
	case when sex=false then count(id) else  0  end as Female 
from 	test
group by  national, sex

Результат
national|Male|Female
rus       | 2     | 0 
rus       | 0      | 2 
kor       | 1     | 0 

Как сделать чтобы оба поля выводились в одной строке? В оракле это делалось с помощью Union All. В постгрусе Union All дает тот же самый результат.
Помогите побороть.
PostgreSQL v7.4.2
...
Рейтинг: 0 / 0
Проблема с SQL
    #32468614
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select * from
( select national, count(*) as male from test where sex = true group by national ) as M
full outer join
( select national, count(*) as female from test where sex = false group by national ) as F
using ( national )

P. S.: "В оракле это делалось с помощью Union All." Кажется, что union здесь не поможет, даже оракловый.
...
Рейтинг: 0 / 0
Проблема с SQL
    #32468628
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оракловский Union помогал.
С энтим щаз поразбераюсь.
Спасиб
...
Рейтинг: 0 / 0
Проблема с SQL
    #32468637
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромным спасиб, все получилось
...
Рейтинг: 0 / 0
Проблема с SQL
    #32468647
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще так придумалось.

select
national,
sum( case when sex is true then 1 else 0 end ) as male,
sum( case when sex is true then 0 else 1 end ) as female
from test
group by national

"Оракловский Union помогал." Странно. :-(
...
Рейтинг: 0 / 0
Проблема с SQL
    #32468926
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да такой вариант тоже. ТОлько вот group по дурацки сортирует
...
Рейтинг: 0 / 0
Проблема с SQL
    #32468981
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как заставить group by отсортировать national по возрастанию
...
Рейтинг: 0 / 0
Проблема с SQL
    #32468990
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"group по дурацки сортирует"

Как же именно?

"Как заставить group by отсортировать national по возрастанию"

Добавив "order by" можно отсортировать результат как угодно.
...
Рейтинг: 0 / 0
Проблема с SQL
    #32469002
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс... :( лохонулся
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Проблема с SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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