2010-09-08 110 views
1

我有這樣的前五列數據庫:SUM和DISTINCT的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數量和價格將始終是相同的)

我想要做的就是像

SELECT善良,SUM(數量*價格)GROUP BY KIND WHERE明確的名稱

所以,我得到的東西看起來是這樣的:

 
A 10 
B 6 
C 25 

(重複的狗是消除。)

我知道我上面的語法錯誤嚴重 - 它只是似乎是解釋我在尋找什麼樣的事情的最有說服力的方法。

換句話說,我想擺脫非明顯的NAMES然後SUM其餘。我似乎可以做一個或另一個,但不能兩個。

任何想法?如果情況變得更糟,我可以將它作爲PHP中的循環而不是單個MYSQL查詢。

+2

你如何指定哪個副本被刪除? – 2010-09-08 21:11:17

+0

我假設一個字母最接近的字母被保留。 – Hammerite 2010-09-08 21:25:59

回答

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 
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