Я пытаюсь создать запрос sql, который вернет наименьшее появление идентификатора, появляющегося между двумя таблицами, однако я продолжаю получать ошибку с линией HAVING MIN(COUNT(E.C_SE_ID))
. Oracle говорит, что группа по функции вложен слишком глубоко. я не могу придумать другой способ возвращения C_SE_ID
Функция SQL group слишком глубоко вложена
SELECT CS.C_SE_ID, MIN(COUNT(E.C_SE_ID))
FROM COURSE_SECTION CS, ENROLLMENT E, LOCATION L
WHERE CS.C_SE_ID=E.C_SE_ID
AND CS.LOC_ID=L.LOC_ID
AND L.BLDG_CODE='DBW'
GROUP BY CS.C_SE_ID
HAVING MIN(COUNT(E.C_SE_ID));
в регистрации таблице s_id
и c_se_id
связаны, я пытаюсь получить все s_id
, которые связаны с этой c_se_id
. с обновленным оракулом запроса не нравится select *
(по понятным причинам), но когда я тоже его меняю e.c_Se_id
Я ничего не получаю.
SELECT E.S_ID
FROM COURSE_SECTION CS, ENROLLMENT E
WHERE CS.C_SE_ID=E.C_SE_ID
AND E.C_SE_ID =(
select *
from (select CS.C_SE_ID, count(*) as cnt,
max(count(*)) over (partition by cs.c_se_id) as maxcnt
from COURSE_SECTION CS join
ENROLLMENT E
on CS.C_SE_ID=E.C_SE_ID join
LOCATION L
on CS.LOC_ID=L.LOC_ID
where L.BLDG_CODE='DBW'
GROUP BY CS.C_SE_ID
order by count(*) desc
) t
where cnt = maxcnt);
Есть три значения, которые должны быть возвращены, но это только возвращает 1 значение? – user1393064
жаль беспокоить вас, но это используется во вложенном подзапросе и его ошибках бросания, так как * возвращает слишком много значений. Я обновлю вопрос со всей необходимой информацией – user1393064