SQL Oracle Найти максимальное количество - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть эта таблица с именем item:

| PERSON_id        | ITEM_id        |
|------------------|----------------|
|------CP2---------|-----A03--------|
|------CP2---------|-----A02--------|
|------HB3---------|-----A02--------|
|------BW4---------|-----A01--------|

Мне нужен оператор SQL, который бы выводил человека с наибольшим количеством Предметов.Не совсем уверен, с чего начать.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Для определения максимума агрегированного столбца требуется более одного вычисления, поэтому здесь можно использовать «общее табличное выражение» (cte) для хранения результата, а затем повторно использовать этот результат в предложении where:

with cte as (
    select
          person_id
        , count(item_id) count_items
    from mytable
    group by
         person_id
    )
select
*
from cte
where count_items = (select max(count_items) from cte)

Обратите внимание, если более одного человека имеют один и тот же максимальный счет;по этому запросу будет возвращено более одной строки.

0 голосов
/ 03 декабря 2018

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

SELECT * FROM 
( 
  SELECT PERSON_ID, COUNT(*) FROM TABLE1 
  GROUP BY PERSON_ID
  ORDER BY 2 DESC
)
WHERE ROWNUM = 1

вот ссылка на скрипач: http://sqlfiddle.com/#!4/4c4228/5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...