2016-03-03 67 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