【问题标题】:Count number of times value appears in particular column in MySQL计数值出现在 MySQL 中特定列中的次数
【发布时间】:2012-04-29 07:22:33
【问题描述】:

这可能以前被问过,但我无法通过无数的搜索结果。

给定一个非规范化的 MySQL 表,计算列 x 的每个不同值被使用的次数的最优化查询是什么?

例如给定一个包含

的表
mike
mary
mike

返回结果如下:

mike 2
mary 1

从 MySQL 文档来看,count 似乎是一个可以与GROUP BY 一起使用的聚合函数,但它没有做我想要的(它返回GROUP BY 中的总行数,而不是每行的出现次数。即这不起作用SELECT count(email) as c FROM orders GROUP BY email

【问题讨论】:

  • i.e. this does not work --- 请详细解释一下。 “不起作用”根本没有帮助
  • 谢谢。会不会我不知道当我问它时发生了什么。

标签: mysql aggregate-functions


【解决方案1】:
select email, count(*) as c FROM orders GROUP BY email

【讨论】:

  • 显然我误读了结果。包括其中的“电子邮件”使我更清楚地看到了哪些数据。我在帖子中的查询确实没有任何问题。谢谢。
  • order 是个好主意,所以我的贡献:select email, count(*) as c FROM orders GROUP BY email ORDER BY c DESC;
【解决方案2】:
SELECT column_name, COUNT(column_name)
FROM table_name
GROUP BY column_name

【讨论】:

    【解决方案3】:

    查看按功能分组。

    group by 函数所做的几乎是对给定字段的相似值进行分组。然后,您可以使用 COUNT 函数显示该值被分组的次数。

    MySQL Documentation

    您还可以将 group by 函数与 MySQL 定义的大量其他函数一起使用(参见上面的链接)。

    mysql> SELECT student_name, AVG(test_score)
        ->        FROM student
        ->        GROUP BY student_name;
    

    【讨论】:

      【解决方案4】:
      select name, count(*) from table group by name;
      

      我认为应该这样做

      【讨论】:

        猜你喜欢
        • 2014-09-20
        • 2019-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-29
        • 1970-01-01
        • 2022-12-22
        • 2015-12-08
        相关资源
        最近更新 更多