如何从生成的表中获取最小的行我的意思是生成的表,我将通过子查询生成一个表来计算记录,然后我将获得最小行。 换一种说法, 我正试图解决的问题 我有一个表:works_on,其中包含处理由pnumber识别的项目的员工的所有ssn 我想确定包含最小员工数量的项目的数量
先谢谢
答案 0 :(得分:1)
MAX ... KEEP
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))
答案 1 :(得分:1)
您可以尝试其他几种选择。
您可以尝试基于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
答案 2 :(得分:0)
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
))