按 SQL Table 中的出现次数过滤

Filter by number of occurrences in a SQL Table

鉴于以下 table,其中 Name 值可能在多行中重复:

我们如何确定 Name 值在 table 中出现了多少次,我们能否过滤具有特定出现次数的 names .

例如,我如何过滤此 table 以仅显示出现两次的 names

您可以使用 group byhaving 展示 name 在 table 中出现两次的

:

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

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

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;