如何计算SQL中字段/列的出现次数?
示例数据集:
A
A
A
A
B
B
C
我想:
A | 4
A | 4
A | 4
A | 4
B | 2
B | 2
C | 1
无论如何不使用 GROUP BY 吗?到目前为止,我得到的所有答案都是我的查询返回以下内容:
A | 4
B | 2
C | 1
答案 0 :(得分:3)
select value, count(*) from table group by value
使用HAVING进一步减少结果,例如只发生超过3次的值:
select value, count(*) from table group by value having count(*) > 3
答案 1 :(得分:1)
您可以对此期望的结果集使用嵌套的子选择。
如果示例表名称为my_table
,则列为col1
:
select col1,
(select count(*) from my_table where col1 = t.col1) as Count
from my_table t;
或者,如果要删除重复项,请使用distinct
语句。它会删除结果集的重复项。
select distinct col1,
(select count(*) from my_table where col1 = t.col1) as Count
from my_table t;
我希望,我可以提供任何帮助。
答案 2 :(得分:0)
您必须先选择要计算的内容,然后对要计算的内容使用count
。之后,您必须指定要从哪个表中计算值,然后对计算的项目进行分组:
select letter, count(*) from table_name group by letter
答案 3 :(得分:0)
@Sun Z,你为什么要让每个字母显示x表中的次数?我的意思是,为什么你想要你在问题中指定的期望结果?
A | 4
B | 2
C | 1
因为输出是干净的,并且比使用' 4'打印出四次更符合逻辑。在每个A旁打印出来,等等。