【问题标题】:Return values in table by number of occurrences按出现次数返回表中的值
【发布时间】:2026-02-01 00:15:02
【问题描述】:

假设我有一张这样的表:

id | name 
---+-----  
5  | aaa
6  | aba
7  | rrr
3  | aaa
2  | aad
1  | aaa
2  | aad

我想返回出现在“名称”列中的所有名称至少 k 次以及该值出现的次数,即如果 k = 1,那么我将得到:

name | num
-----+----
aaa  | 3
aba  | 1
rrr  | 1
aad  | 2

对于 k = 3,我将得到:

name | num
-----+----        
aaa  | 3

【问题讨论】:

    标签: sql postgresql select


    【解决方案1】:

    您可以在having 子句中对count 设置条件:

    SELECT   name, COUNT(*)
    FROM     mytable
    GROUP BY name
    HAVING   COUNT(*) >= k
    

    【讨论】:

    • 太棒了,这和 Stidgeon 的回答有什么区别?
    【解决方案2】:

    我会尝试以下方式:

    SELECT COUNT (*)
    FROM table
    GROUP BY name
    HAVING COUNT = k;
    

    或 > k 或任何你喜欢的条件

    【讨论】: