需要解决查询

时间:2016-03-05 13:44:16

标签: sql

EasyShop的管理层希望将这些物品分类为便宜,实惠,昂贵且非常昂贵。如果项目单价在0到499之间然后是“便宜”,如果在500和1999之间然后是'经济实惠',如果在2000和4999之间然后'昂贵'并且如果价格大于或等于5000则完成分类'非常昂贵'。编写查询以显示项目类型和项目分类。显示按项目类型和分类按升序排序的唯一行。

这是我的查询

SELECT DISTINCT ItemType,
CASE
Price BETWEEN 0 AND 499 THEN 'Cheap'
Price BETWEEN 500 AND 1999 THEN 'Affordable'
Price BETWEEN 2000 AND 4999 THEN 'Expensive'
Price >=5000 THEN 'Very Expensive'
END Classification
FROM Item

6 个答案:

答案 0 :(得分:0)

你在尝试下面的东西吗?看看:

SELECT DISTINCT CASE 
WHEN Price BETWEEN 0 AND 240 THEN 'Cheap'
WHEN Price BETWEEN 241 AND 1200 THEN 'Expensive' END AS Range 
FROM Products 
ORDER BY Price

答案 1 :(得分:0)

您需要在查询中添加 ORDER BY ItemType,Classification 。您还应在 CASE 语句中包含 WHEN

Does not participate in build

答案 2 :(得分:0)

查询中存在语法错误。 CASE语法

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionN THEN resultN
    ELSE result
END;

以下是正确的查询。

SELECT DISTINCT ItemType, CASE 
WHEN Price BETWEEN 0 AND 499 THEN 'Cheap'
WHEN Price BETWEEN 500 AND 1999 THEN 'Affordable'
WHEN Price BETWEEN 2000 AND 4999 THEN 'Expensive'
WHEN Price >=5000 THEN 'Very Expensive' END Classification
FROM Item
ORDER BY ItemType, Classification;

答案 3 :(得分:0)

以下是ORACLE(mysql等)中的正确查询。

SELECT distinct ItemType,
CASE  
    WHEN price between 0 and 499 THEN 'Cheap'
    WHEN price between 500 and 1999 THEN 'Affordable'
    WHEN price between 2000 and 4999 THEN 'Expensive'
    WHEN price >=5000 THEN 'Very Expensive'
END AS classification 
FROM Item order by ItemType,classification asc

答案 4 :(得分:0)

检查

SELECT DISTINCT ItemType,CASE
WHEN Price BETWEEN 0 AND 499 THEN 'Cheap' 
WHEN Price BETWEEN 500 AND 1999 THEN 'Affordable'
WHEN Price BETWEEN 2000 AND 4999 THEN 'Expensive'
WHEN Price>=5000 THEN 'Very Expensive'
END Classification FROM ITEM WHERE (PRICE BETWEEN 0 AND 499) OR (PRICE BETWEEN 500 AND 
1999) OR (PRICE BETWEEN 2000 AND 4999) OR (PRICE>5000) GROUP BY ITEMTYPE,PRICE ORDER BY 
ITEMTYPE, CLASSIFICATION;

答案 5 :(得分:-1)

SELECT distinct ItemType,
CASE 
WHEN
  Price BETWEEN 0 AND 499 THEN 'Cheap'
WHEN
  Price BETWEEN 500 AND 1999 THEN 'Affordable'
WHEN
  Price BETWEEN 2000 AND 4000 THEN 'Expensive'
else 'Very Expensive'
END Classification
FROM Item
ORDER BY ItemType, Classification