2016-03-03 70 views
1

檢索項目類型,項目類別和平均價格四捨五入到快速消費品,計算機類型項目的兩位小數。平均價格必須低於2000.dbms sql查詢需要正確解析

ITEMCODE ITEMTYPE DESCR PRICE REORDERLEVEL QTYONHAND CATEGORY 
I1001 FMCG Britannia Marie Gold Cookies 20 100 1000 C 
I1002 FMCG Best Rice 120 100 1000 C 
I1003 FMCG Modern Bread 15 100 1000 C 
I1004 Apparels Lee T-Shirt 300 100 1000 B 
I1005 Apparels Levis T-Shirt 1700 100 1000 B 
I1006 Apparels Satyapaul Sari 7300 100 1000 A 

我的查詢是否正確?

SELECT ItemType, Category, ROUND(AVG(Price),2) 
FROM Item 
WHERE (ItemType = 'FMCG') 
OR (ItemType = 'Computer') 
AND (Avg(Price) < 2000) 
GROUP BY ItemType; 
+1

當你嘗試時發生了什麼? –

回答

1

幾乎是正確的,你不能在WHERE子句中使用聚合函數,你應該把它們在HAVING子句中的組後是這樣的:

SELECT ItemType, Category, ROUND(AVG(Price),2) 
FROM Item 
WHERE ItemType in('FMCG','Computer') 
GROUP BY ItemType,Category; 
HAVING Avg(Price) < 2000 

我做了兩次調整您的查詢。首先,當將同一列與1以上的值進行比較時,請使用IN而不是OR。

其次,我認爲查詢應該按類別分組,因爲它不總是相同的,但是如果你知道你不應該從group by子句中刪除它。

+1

Upvote爲更正組! – jarlh