如何从显示新列的表中选择数据作为旧列数据的增加百分比?

时间:2015-04-26 12:30:07

标签: sql oracle select

我正在学习SQL,而且我已经在我的书中对这个问题感到难过了一段时间了。

本书中的问题以我是书店的DBA的方式提出。

所以,我有所有这些表(书籍,作者,出版商,客户,订单等)我认为是由本书的作者(Joan Casteel的Oracle 11g)创建的。

这个问题问我:

  

管理层建议提高每本书的价格。增加的数量将根据每本书的类别,根据以下比例:计算机书籍,10%,健身书籍,15%,自助书籍,25%,所有其他类别,3%。创建一个列表,显示每本书的标题,类别,当前零售价格和修订后的零售价格。价格应显示两位小数。输出的列标题应如下所示:标题,类别,当前价格和修订价格。按类别对结果进行排序。如果某个类别中有多本书,则应对该书的标题进行二次排序。

     

创建一个文档,向管理层显示用于生成结果的SELECT语句和语句的结果。

所以我知道在我的SQL语句中我需要选择这些书的标题,书籍的类别,书籍的当前零售价格以及书籍的修订零售价格。对于此修订后的零售价格,我需要显示旧零售价格的百分比增长,并按类别进行。

这就是我开始做的事情:

SELECT title, category, retail AS "Current Price", retail + (10/100) AS "New Price"
FROM books
WHERE category = 'COMPUTER';

当我这样做的时候,我只能从COMPUTER类别的图书中获得结果,我需要所有类别的结果,并按类别显示价格增长百分比。

我如何才能将下一栏创建为“新价格”并根据书籍类别显示所有具有特定%零售价格增长的书籍?

2 个答案:

答案 0 :(得分:1)

您可以使用CASE语句执行此操作。

SELECT title, category, retail AS "Current Price", retail * CASE category WHEN 'COMPUTER' THEN 1.1 WHEN 'FITNESS' THEN 1.15 ELSE 1.03 END AS "New Price"
FROM books

我没有填写所有类别,并且您要检查以确保您确切知道它们在您的字段中的格式。

答案 1 :(得分:0)

执行以下操作:

SELECT title, category, retail AS "Current Price", retail + (10/100) AS "Revised Price"
FROM books
WHERE category IN ('COMPUTER', 'FITNESS', 'SELF HELP');