Таблица S_EMP (содержит
информацию о служащих фирмы). Столбцы : ID - идентификатор
каждого служащего (его номер в таблице), LAST_NAME - фамилия
служащего, FIRST_NAME -имя служащего, USERID -логическое
имя пользователя, START_DATE- дата
начала работы, TITLE -должность,DEPT_ID -номер
отдела, в котором работает служащий Необходимо создать запрос для вывода общего количества служащих и количеств служащих, нанятых в 1990, 1991 и 1992 годах. Создать для столбцов псевдонимы «Общее количество», «1990», «1991», «1992». Мозгов хватает лишь на то, чтобы создать запрос для каждого года отдельно, например для 1990 : SELECT COUNT (ID) "1990" FROM S_EMP WHERE TO_CHAR( START_DATE, 'YYYY' ) =1990) ; А как их объединить ? С помощью подзапросов ? Подскажите, пожалуйста... Работаю в H2
информацию о служащих фирмы). Столбцы : ID - идентификатор
каждого служащего (его номер в таблице), LAST_NAME - фамилия
служащего, FIRST_NAME -имя служащего, USERID -логическое
имя пользователя, START_DATE- дата
начала работы, TITLE -должность,DEPT_ID -номер
отдела, в котором работает служащий Необходимо создать запрос для вывода общего количества служащих и количеств служащих, нанятых в 1990, 1991 и 1992 годах. Создать для столбцов псевдонимы «Общее количество», «1990», «1991», «1992». Мозгов хватает лишь на то, чтобы создать запрос для каждого года отдельно, например для 1990 : SELECT COUNT (ID) "1990" FROM S_EMP WHERE TO_CHAR( START_DATE, 'YYYY' ) =1990) ; А как их объединить ? С помощью подзапросов ? Подскажите, пожалуйста... Работаю в H2
FROM `s_emp` AS X
LEFT JOIN `s_emp` AS A ON (X.`id` = A.`id` AND A.`start_date` = 1990)
LEFT JOIN `s_emp` AS B ON (X.`id` = B.`id` AND B.`start_date` = 1991)
LEFT JOIN `s_emp` AS C ON (X.`id` = C.`id` AND C.`start_date` = 1992)
Примерно такая идея (mysql). Что-то ничего лучше в голову не приходит..
select count(distinct userid) as "общее количество",
(select count(distinct userid) as "1990"
from s_emp
where start_date >= 01.01.1990
and start_date<=31.12.1990),
(select
по тому же принципу, только колонну назвать 1991 и даты прописать от 1го января до 31 декабря
),
(select
то же самое, только с 1992
)
from s_emp;
В любом случае, попробуйте сначала выписать общее количество, потом добавляйте внутренние запросы.