我有一个包含前五列的数据库,如下所示:
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查询。
答案 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