【问题标题】:MySQL: Count occurrences of known (or enumerated) distinct valuesMySQL:计算已知(或枚举)不同值的出现次数
【发布时间】:2017-03-27 07:08:59
【问题描述】:

在字段中查看how to count the occurrences of distinct values 后,我想知道如果不同值已知(或枚举),如何计算每个不同值的出现次数。

例如,如果我有一个简单的表 -

TrafficLight        Colour
------------        ------
1                   Red 
2                   Amber
3                   Red 
4                   Red 
5                   Green 
6                   Green 

如果一列(在本例中为 Colour)已知(或枚举)不同的值,我如何将每种颜色的计数作为单独的值返回,而不是作为数组返回,如链接示例中所示。

要返回一个包含每种颜色计数的数组(使用与链接示例中相同的方法),查询类似于SELECT Colour COUNT(*) AS ColourCount FROM TrafficLights GROUP BY Colour,并返回一个数组 -

Colour          ColourCount 
------          -----------
Red             3
Amber           1
Green           2

我想做的是将每种颜色的计数返回为单独的总数(例如 RedCount)。我怎样才能做到这一点?

【问题讨论】:

  • 您已经通过上述查询获得了计数,因此您可以使用服务器端脚本对其进行操作,而将颜色作为单独的总数(例如 RedCount)是什么意思?
  • 我知道我通过上述查询得到了 ALL 颜色的计数。我想将指定颜色的计数作为单独的总数,即只返回该颜色的总数,而不是返回一个包含所有颜色计数的数组。例如,如果我有一个红绿灯,可能是红色、琥珀色、绿色、紫罗兰色、粉红色、蓝色、海蓝宝石、棕色、黑色、白色等等等等,我只想看红色、琥珀色和绿色,如果不返回整个数组,我怎么能做到这一点?

标签: mysql sql


【解决方案1】:

对于 mysql,您可以这样做,通过在 sum(expr) 中使用表达式将结果为布尔值,您可以单独计算颜色的出现次数

SELECT 
SUM(Colour = 'Red') AS RedCount, 
SUM(Colour = 'Amber') AS AmberCount, 
SUM(Colour = 'Green') AS GreenCount
FROM t 

Demo

【讨论】:

  • 谢谢,这正是我一直在寻找的! (抱歉,如果这是一个明显的问题,到目前为止我很少接触数据库,我只是边走边学)谢谢。
【解决方案2】:

试试这个查询:

SELECT
  (SELECT COUNT(*) AS ColourCount FROM tableA GROUP BY colour HAVING colour = 'Red') AS     red_lights,
  (SELECT COUNT(*) AS ColourCount FROM tableA GROUP BY colour HAVING colour = 'Green') AS green_lights,
  (SELECT COUNT(*) AS ColourCount FROM tableA GROUP BY colour HAVING colour = 'Amber') AS amber_lights
FROM
  tableA

Here is the Fiddle

【讨论】:

    【解决方案3】:

    您不必知道枚举值:

    SELECT Colour, count(*) as Frequency FROM t GROUP BY Colour ;
    

    如果您的代码在“琥珀”报告为“黄色”的情况下使用,它仍然有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      相关资源
      最近更新 更多