SQL字符串组由

时间:2017-03-26 13:32:16

标签: sql postgresql group-by

我有一个包含name surname的表格和其他一些不重要的属性。该表有超过一百万行,因此有许多名称或姓氏相同 - 重复。

我想要做的是创建一个直方图,它会返回表格中的每个name,但会出现多次。对于我表中的每个其他属性都是一样的。

我试着写一个这样的简单选择,它在表格中返回一个名为Aaron的数字(出现):

select count(name)
from public.customers 
where name = 'Aaron'

但问题是我必须拥有表中所有名称的列表,然后为每个名称写一个选择,这不是很聪明。当然需要很多时间。是不是有更好更容易的方法呢?

3 个答案:

答案 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