我有一个包含name
surname
的表格和其他一些不重要的属性。该表有超过一百万行,因此有许多名称或姓氏相同 - 重复。
我想要做的是创建一个直方图,它会返回表格中的每个name
,但会出现多次。对于我表中的每个其他属性都是一样的。
我试着写一个这样的简单选择,它在表格中返回一个名为Aaron
的数字(出现):
select count(name)
from public.customers
where name = 'Aaron'
但问题是我必须拥有表中所有名称的列表,然后为每个名称写一个选择,这不是很聪明。当然需要很多时间。是不是有更好更容易的方法呢?
答案 0 :(得分:1)
您希望group by
具有聚合函数count
:
select name,
count(*) as occurrences
from public.customers
group by name
order by name;
如果要计算出现次数,可以进行双重聚合:
select occurrences,
count(*) as count_of_occurrence
from (
select name,
count(*) as occurrences
from public.customers
group by name
) t
group by occurrences
order by count_of_occurrence;
答案 1 :(得分:0)
这是group by
查询的最简单示例:
select name, count(*)
from customers
group by name
order by name;
答案 2 :(得分:0)
select name, Count(*)
from public.customers
group by name