MySQL:计算每次出现的总"值"

use*_*497 1 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
Run Code Online (Sandbox Code Playgroud)

我实际上想要得到一个观点,我看到它按每种颜色的骨骼总量排序,并查看数量.应该是这样的:

    Color   Amount   
    -----------------------
    white   9
    yellow  6
    brown   4
    black   4
Run Code Online (Sandbox Code Playgroud)

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

SELECT Color,COUNT(*) as count FROM tablename GROUP BY Color ORDER BY count DESC;
Run Code Online (Sandbox Code Playgroud)

但这给了我:

    Color   Amount   
    -----------------------
    white   3
    yellow  3
    brown   2
    black   2
Run Code Online (Sandbox Code Playgroud)

哪个是具有不同值的事件计数,但不是我真正想要的.是否可以在一个查询中?如果这样的魔法可能,我该如何扩展呢?例如,我的数量相同,但是对于长度超过11厘米的骨头,我们可以这样说吗?

小智 5

使用

SUM(amount)
Run Code Online (Sandbox Code Playgroud)

代替

COUNT(*)
Run Code Online (Sandbox Code Playgroud)

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