根据SQL表中的出现次数进行过滤

问题描述

给出下表,其中Name值可能在多行中重复:

The table

我们如何确定表中的Name值存在多少次,以及如何过滤出现次数特定的名称

例如,如何过滤此表以仅显示出现两次的名称

解决方法

您可以使用havingname来展示在表中两次出现的select name,count(*) cnt from mytable group by name having count(*) = 2

select count(*) cnt
from (
    select name
    from mytable
    group by name
    having count(*) = 2
) t

然后,如果您希望名称的总数出现两次,则可以添加另一个聚合级别:

[["A","A","A"],["B","B"],["C"]]
,

听起来您正在寻找名称计数频率的直方图。像这样

with counts_cte(name,cnt) as (
    select name,count(*) 
    from mytable
    group by name)
select cnt,count(*) num_names
from counts_cte
group by cnt
order by 2 desc;
,

您需要使用GROUP BY子句查找重复的名称计数

select name,count(*) AS Repeated
from Your_Table_Name
group by name;

如果您只想显示重复超过一次的内容。然后,使用下面的查询将显示那些出现次数超过一次的事件。

select name,count(*) AS Repeated
from Your_Table_Name
group by name having count(*) > 1;