Я работаю с базой данных Oracle по умолчанию scott
с дополнительной таблицей PROJECT
, где есть 5 столбцов: projno, projname, budget, start_date, end_date.
Я хочу выбрать месяцс наибольшим количеством проектов в конкретном году.В инструкции к моему упражнению сказано, что это должно быть сделано с помощью коррелированного подзапроса.
Я знаю, как это сделать с uncorrelated subquery
:
SELECT EXTRACT(month FROM end_date) as "Month", COUNT(*) as "No of projects"
FROM proj
WHERE EXTRACT(year FROM end_date) = 2016
GROUP BY EXTRACT(month FROM end_date)
HAVING COUNT(*) = (SELECT MAX(COUNT(*))
FROM proj
WHERE EXTRACT(year FROM end_date) = 2016
GROUP BY EXTRACT(month FROM end_date))
Вот моя попытка с correlated subquery
- это не работает:
SELECT (EXTRACT(month FROM end_date)), COUNT(*) as "liczba"
FROM proj p
WHERE EXTRACT(year FROM end_date) = 2016
GROUP BY EXTRACT(month FROM end_date)
HAVING COUNT(*) = MAX (SELECT(COUNT(EXTRACT(month FROM proj.end_date)))
FROM proj
WHERE EXTRACT(month FROM proj.end_date) = EXTRACT(month FROM p.end_date)
AND EXTRACT(year FROM proj.end_date) = 2016)