Как исправить 'ORA-00978: функция вложенной группы без GROUP BY' - PullRequest
0 голосов
/ 06 апреля 2019

Хорошо, я знаю, как работает group by, но я продолжаю получать это сообщение и понятия не имею, что я сделал не так.

Что мне следует сделать, это: дать имя и количество президентов партии, в которой было наибольшее количество президентов.

select p1.party, count(p1.pres_name)
from president p1
group by p1.party, p1.pres_name
having 
   count(p1.pres_name) =
(select max(count(p2.pres_name))from president p2 where p1.part = p2.party)

Ответы [ 3 ]

0 голосов
/ 06 апреля 2019

Почему вы используете имя столбца в статистической функции и в группе одновременно? Попробуйте это:

SELECT PARTY,CNT FROM(
SELECT PARTY,COUNT(PRES_NAME) AS CNT
FROM PRESIDENT 
GROUP BY PARTY
ORDER BY 2 DESC
)
ROWNUM = 1;
0 голосов
/ 06 апреля 2019

Это сделает это без подзапросов

select p1.party, count(p1.pres_name) cnt
from president p1
group by p1.party
order by count(p1.pres_name) desc
fetch first 1 row only
0 голосов
/ 06 апреля 2019

Использовать оконные функции:

select party, num_presidents
from (select p.party, count(*) as num_presidents,
             rank() over (order by count(*) desc) as seqnum
      from president p
      group by p.party,
     ) p
where seqnum = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...