我正在学习SQL,我已经有一段时间被书中的这个问题难住了。
这本书中的问题是以这样一种方式提出的:我是书店的DBA。
所以,我有所有这些表格(书籍、作者、出版商、客户、订单等)。我猜想是由这本书的作者创作的(Oracle11g由创作)。
这个问题问我:
管理层建议提高每本书的价格。增加的数量将根据每本书的类别,按以下比例计算:计算机书籍10%,健身书籍15%,自助图书25%,所有其他类别3%。创建一个列表,显示每本书的标题、类别、当前零售价和修改后的零售价。价格应以小数点两位显示。输出的列标题应如下:标题、类别、当前价格和修订价格。按类别对结果进行排序。如果一个类别中有不止一本书,那么应该在书的标题上进行第二次排序。 创建一个文档以显示用于生成结果和语句结果的SELECT语句。
因此,在我的SQL语句中,我需要选择这些书籍的标题、书籍的类别、图书的当前零售价以及图书的修订零售价。对于这个修改后的零售价格,我需要显示出旧零售价格的百分之一的增长,并按类别进行。
这就是我开始做的事情:
SELECT title, category, retail AS "Current Price", retail + (10/100) AS "New Price"
FROM books
WHERE category = 'COMPUTER';但是,当我这样做的时候,我只能从电脑图书类别中得到结果,我需要所有类别的结果,并显示按类别计算的价格增长%。
我如何做到这一点,以便我可以创建下一栏为“新价格”,并显示所有的书籍,其零售价按类别的具体百分之增长?
发布于 2015-04-26 12:36:54
您可以使用一个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我没有填写所有的类别,您需要检查以确保您知道它们在您的字段中是如何格式化的。
发布于 2018-11-08 02:26:33
这样做:
SELECT title, category, retail AS "Current Price", retail + (10/100) AS "Revised Price"
FROM books
WHERE category IN ('COMPUTER', 'FITNESS', 'SELF HELP');https://stackoverflow.com/questions/29877648
复制相似问题