MySQL:计算每次出现的总“值”

时间:2013-11-15 19:52:38

标签: mysql sql

是否有一些查询“魔法”可以执行我正在寻找的内容,或者必须使用返回的结果以编程方式完成?

我有“骨头”表:

    Color   Amount   Length
    -----------------------
    yellow  3        15
    brown   2        16
    white   4        10
    yellow  2        11
    black   2        15
    white   1        15
    brown   2        16
    white   4        10
    yellow  1        11
    black   2        15

我实际上希望得到一个关于此的视图,我看到它按每种颜色的骨骼总量排序,并查看数量。 应该是这样的:

    Color   Amount   
    -----------------------
    white   9
    yellow  6
    brown   4
    black   4

但到目前为止,我只想到了以下查询:

SELECT Color,COUNT(*) as count FROM tablename GROUP BY Color ORDER BY count DESC;

但这给了我:

    Color   Amount   
    -----------------------
    white   3
    yellow  3
    brown   2
    black   2

具有不同值的出现次数,但不是我真正想要的值。 是否可以在一个查询中?如果这样的魔法可能,我该如何扩展呢?例如我算一算,但是对于长度超过11厘米的骨头呢?

2 个答案:

答案 0 :(得分:5)

使用

SUM(amount)

而不是

COUNT(*)

因为SUM()会添加该分组中的所有值,而COUNT()仅计算NOT NULL的出现次数

答案 1 :(得分:-1)

试试这个:

SELECT Color,SUM(amount) as count FROM tablename
GROUP BY Color ORDER BY count DESC;

COUNT =计算次数,

SUM =提供添加列数据