我希望根据我在条件中给出的条件获得最小数量的记录 .
例如:我有一个包含两列的表(Id,Value)
我的表有如下数据:
Id Value
1 001
2 001
3 001
4 002
5 002
6 003
7 004
8 004
9 004
10 004
从上表中,值'001'有3个Ids(1,2,3),值'002'有2个,依此类推 .
现在我想要识别具有最小ID的值(例如,在这个示例中,它应该是值'003',只有一个Id) .
如何在Oracle中为此编写查询 .
提前致谢 .
3 回答
下面的查询将选择具有最低行数的值(或多个值) . 在tie的情况下,选择具有相同,最小行数的所有值 . 行计数未显示,但可以很容易地显示(将其添加到外部
select
) .真正的工作是在聚合子查询中完成的 . 除了值和行数之外,我们还在聚合的整个结果上计算分析函数
min(count(*))
,因此分析子句实际上是空的:over ()
.您可以使用GROUP BY,按计数排序,最后选择第一行
sqlfiddle:http://sqlfiddle.com/#!4/e5f075/1
如果您使用的是Oracle 12,则可以执行以下操作:
如果您需要拥有共享最小计数的所有值,请将
only
替换为with ties
.