这是在Oracle数据库中。说我有下表A:
column1 column2
id1 a
id2 a
id3 a
id4 b
id5 b
id6 c
所以我想要sql做的是: 首先计算有三个As和两个b和一个c,然后基于计数返回我这些计数的最小数量,在这种情况下是1(因为我们只有一个c)
这可以通过使用MIN和COUNT的组合以某种方式实现吗?
答案 0 :(得分:1)
在Oracle中,您可以直接执行此操作;每组计数并在结果上使用MIN以获得具有所需值的一行。
select min(count(*))
from tablea
group by column1;
答案 1 :(得分:0)
试试这个:
SELECT MIN(Count) as MinVal
FROM
(SELECT column2,COUNT(column2) as Count
FROM TableA
GROUP BY column2) T
<强>解释强>
内部查询为表格中column2
的每个值选择column2
的计数。然后使用外部查询,选择最小计数。
答案 2 :(得分:0)
SELECT MIN(cnt)
FROM (SELECT COUNT(*) AS cnt
FROM my_table
GROUP BY column2)
修改强>
正如ElmoVanKielmo所指出的那样,在没有解释的情况下提供解决方案毫无意义
内部查询按column2
值对数据进行分组,并返回每个值的行数。外部查询将这些视为一堆数字,并返回其中的最小值。
答案 3 :(得分:0)
如果您使用的是Oracle 12,则可以在没有子查询的情况下执行此操作:
select count(*) as cnt
from table t
group by cnt
order by cnt asc
fetch first 1 row only;
对于那些熟悉MySQL或Postgres的人来说,fetch first 1 row only
等同于limit
,并且允许您在不使用子查询的情况下限制输出行的数量。
答案 4 :(得分:0)
这应该对你有用
SELECT *
FROM(
SELECT Column2, COUNT(Column1)
FROM TableA
GROUP BY Column2
ORDER BY COUNT(Column1))
WHERE Rownum = 1