Как вывести два количества записей по условию одним SELECT?
Вот условие:
Составить запрос с использованием таблицы8, который выводит одним предложением
selectдва числа.
Первое число – количество жителей с фамилией Волков или Волкова.
Второе число – количество жителей с фамилией Зайцев или Зайцева.
Единственное, что в нём откровенно напрягает, так это то, что нельзя использовать больше одного select и, следовательно, подзапросы.
Я, конечно, пытался разрешить это посредством алиасов, но это не помогло:
SELECT FIO VOLKOVI, FIO ZAICEVI FROM ELEKTROSTAL WHERE VOLKOVI LIKE 'Волков%'
П.С. Я знаю, как вывести количество, и знаю, что забыл про условие для второго столбца: всё это я напишу сам, но только после того, как разберусь с селектами и псевдонимами.
Ответы (2 шт):
Ну это просто. Расписывать не стану. Покажу, как считать количество.
SELECT
sum(case when family = 'волковы' then 1 else 0 end ) countWolfs,
sum(case when family = 'зайцевы' then 1 else 0 end ) countRabbits
FROM table8
Можно и через count, но идея останется прежней. Считаем только тех, кто нужен.
Правильное решение такое:
select
count (case when lastname in ('Волков','Волкова') then 1 end) "Волковы",
count (case when lastname in ('Зайцев','Зайцева') then 1 end) "Зайцевы"
from t8
where lastname in ('Волков','Волкова','Зайцев','Зайцева')
Тестовые данные и результат запроса выше:
create table t8 (lastname) as
select trim (column_value) from xmlTable ('
"Волков", "Волкова", "Зайцев","Зайцева",
"Сидоров","Сидорова","Петров","Петрова"');
Волковы Зайцевы
---------- ----------
2 2