SQL группировка, а затем разгруппировка в одном запросе - PullRequest
0 голосов
/ 17 декабря 2010

Эй, я пытаюсь выполнить подзапрос, который позволяет мне подсчитать что-то путем группировки, затем в основном разгруппировать и выбрать определенное количество строк, основываясь на подсчете, который я только что получил.Этот запрос в основном то, что я хочу, если бы SQL разрешил что-то вроде метода contains () или что-то в этом роде.

select cat, mouse
from pets
where cat = (select cat
             from pets
             group by cat
             having count(mouse) > 3);

Есть мысли?Использование oracle10g.

Ответы [ 2 ]

5 голосов
/ 17 декабря 2010
select cat, mouse
from pets
where cat in (select cat
         from pet
         group by cat
         having count(mouse) > 3);

Измените '=' на 'in' Ключевое слово in предназначено для этого.

1 голос
/ 18 декабря 2010

Не то, чтобы ужасно неправильно использовать входящий подзапрос, но подход, использующий аналитические функции, обычно работает намного лучше для такого типа запроса на само присоединение.

<code>select cat, mouse from
(
    select cat, mouse, count(mouse) over(partition by cat) as ct
) 
where ct = 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...