SUM和DISTINCT的MYSQL查询?

时间:2010-09-08 21:08:38

标签: mysql

我有一个包含前五列的数据库,如下所示:

ID  NAME  QUANTITY   PRICE   KIND
1    Dog       2       5      A
2    Cat       1       6      B
3    Dog       2       5      C
4    Bird      5       5      C

(DOG QUANTITY和PRICE将始终如一)

我想做的是

选择KIND,SUM(QUANTITY * PRICE)GROUP BY KIND WHERE DISTINCT NAME

所以我得到的东西看起来像这样:

A 10
B  6
C 25   

(删除了重复的DOG。)

我知道上面的语法是非常错误的 - 它似乎是解释我正在寻找什么样的东西的最有说服力的方式。

换句话说,我想摆脱不同的NAMES,然后将其余部分弄清楚。我似乎可以做一个或另一个但不是两个。

有什么想法吗?如果情况更糟,我可以在PHP中作为循环而不是单个MYSQL查询。

2 个答案:

答案 0 :(得分:1)

我不清楚规则是什么或为什么你的表格采用那种格式(重复名称,数量,价格),但这是获得预期输出的一种方法。

select kind, SUM(quantity*price)
from
(
SELECT name, quantity, price, min(kind) kind
FROM YourTable
group by name, quantity, price
) t
group by kind

答案 1 :(得分:0)

在这里,我选择ID最低的项目作为要保留的项目:

Select T.Kind, Sum( T.Quantity * T.Price ) As Total
From Table As T
Where Id = (
            Select Min(T2.Id)
            From Table As T2
            Where T2.Name = T.Name
            )
Group By T.Kind

假设您的表在名称和种类上是唯一的,您可以这样做:

Select T.Kind, Sum( T.Quantity * T.Price ) As Total
From Table As T
Where T.Kind =  (
                Select Min(T2.Kind)
                From Table As T2
                Where T2.Name = T.Name
                )
Group By T.Kind