2010-12-01 35 views
1

行,所以我有這個疑問如何做一個數查詢由不同的產品,集團

SELECT * 
FROM configure_system 
WHERE EstimateID='EDB95PY0Z2' AND StepID=1 

這將返回以下8行......我需要一個查詢,只返回所有不同的productID和總價和它們的數量...所以例如

我想是這樣的

ProductID ProductPrice TotalPrice quantity 
2   575   1175  2 
3   839   1678  2 
9   1349   4047  3 
12   1699   1699  2 

我使用不同的查詢和統計,但都沒有成功嘗試

回答

1
SELECT ProductID       , 
     ProductPrice       , 
     COUNT(*) * ProductPrice AS TotalPrice, 
     COUNT(*)    AS quantity 
FROM  configure_system 
WHERE EstimateID='EDB95PY0Z2' 
AND  StepID =1 
GROUP BY ProductID, 
     ProductPrice 
+0

某事是正確使用where子句在MySQL中的聚合查詢?就我所知,它在Sql server和oracle中也是非法的 – 2010-12-01 16:58:19

+0

@Jani:對於這些產品,在GROUP BY中使用WHERE子句絕對不是問題。如果您嘗試在where子句中使用聚合,則會出現問題。例如`在哪裏(*)= 1`。這是非法的,需要在「有」條款中進行。 – 2010-12-01 17:03:35

1

你需要看看「GROUP BY」子句和「聚合函數」

1
SELECT ProductID,ProductPrice,SUM(ProductPrice),COUNT(*) 
FROM configure_system 
WHERE EstimateID='EDB95PY0Z2' AND StepID=1 
GROUP BY ProductID,ProductPrice 
1

它會像這樣

SELECT productId 
     ,count(*) 
     ,count(*)*price 
    FROM [Table_1] 
    GROUP BY productId,Price 
    HAVING productId = 'blabla'