MySQL:为每个人检索值和计数

时间:2018-02-06 11:16:52

标签: mysql

如何计算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

4 个答案:

答案 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旁打印出来,等等。