让我们假设我们有一个这样的表。
id name value
1 x 12
2 x 23
3 y 47
4 x 18
5 y 29
6 z 45
7 y 67
按名称执行普通组会产生我们
按名称从表组中选择名称,计数(*);
name count(*)
x 3
y 3
z 1
我想反过来..即。对发生设定次数的名称数进行分组。我希望我的输出是
count number of elements occuring count times
1 1
3 2
是否可以仅使用一个查询来执行此操作?另一种方法是使用临时表,但我不想这样做。
由于
答案 0 :(得分:0)
您还需要一个group by
:
select cnt, count(*), min(name), max(name)
from (select name, count(*) as cnt
from table
group by name
) n
group by cnt
order by 1;
我一直在进行这些类型的直方图查询。 min()
和max()
提供了示例数据。这对于理解异常值和意外值很有用。
答案 1 :(得分:0)
您可以GROUP BY
两次,例如
with
Names as (
select name as name,
count(1) as cnt
from MyTable
group by name)
select count(1),
cnt
from Names
group by cnt