Как я могу получить самый маленький ряд - PullRequest
0 голосов
/ 31 марта 2011

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

спасибо заранее

Ответы [ 3 ]

1 голос
/ 31 марта 2011

Несколько других опций для вас.

Вы можете попробовать простой подход, основанный на rownum

select *
from (
  SELECT pnumber, count(*) cnt
  FROM works_on
  GROUP BY pnumber
  order by cnt
)
where rownum < 2

Или использовать аналитическую функцию RANK.Функции DENSE_RANK и ROW_NUMBER будут работать аналогично (но каждая немного по-разному.

SELECT *
FROM (
  SELECT pnumber, cnt, rank() over (order by cnt) as my_rank
  from (
    SELECT pnumber, count(*) cnt
    FROM works_on
    GROUP BY pnumber
  )
)
WHERE my_rank = 1
1 голос
/ 31 марта 2011

МАКС. ... СОХРАНИТЬ

SELECT MAX( pnumber) KEEP (DENSE_RANK FIRST ORDER BY cnt DESC)
FROM
  (SELECT pnumber, count(*) cnt
  FROM works_on
  GROUP BY pnumber)

Если у вас есть несколько проектов с одинаковым минимумом, это немного усложняется.

SELECT pnumber FROM works_on
GROUP BY pnumber
HAVING COUNT(*) =
  (SELECT MAX( cnt) max_cnt
  FROM
    (SELECT pnumber, count(*) cnt
    FROM works_on
    GROUP BY pnumber))
0 голосов
/ 03 апреля 2011
select * from (

select pnumber , count (pnumber)counter from works_on 

group by pnumber

)

where counter=(select min(counter) from (select pnumber , count (pnumber)counter from works_on 

group by pnumber

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