首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从显示新列的表中选择数据,使旧列的数据增加百分比?

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

Stack Overflow用户
提问于 2015-04-26 12:30:06
回答 2查看 1.8K关注 0票数 1

我正在学习SQL,我已经有一段时间被书中的这个问题难住了。

这本书中的问题是以这样一种方式提出的:我是书店的DBA。

所以,我有所有这些表格(书籍、作者、出版商、客户、订单等)。我猜想是由这本书的作者创作的(Oracle11g由创作)。

这个问题问我:

管理层建议提高每本书的价格。增加的数量将根据每本书的类别,按以下比例计算:计算机书籍10%,健身书籍15%,自助图书25%,所有其他类别3%。创建一个列表,显示每本书的标题、类别、当前零售价和修改后的零售价。价格应以小数点两位显示。输出的列标题应如下:标题、类别、当前价格和修订价格。按类别对结果进行排序。如果一个类别中有不止一本书,那么应该在书的标题上进行第二次排序。 创建一个文档以显示用于生成结果和语句结果的SELECT语句。

因此,在我的SQL语句中,我需要选择这些书籍的标题、书籍的类别、图书的当前零售价以及图书的修订零售价。对于这个修改后的零售价格,我需要显示出旧零售价格的百分之一的增长,并按类别进行。

这就是我开始做的事情:

代码语言:javascript
复制
SELECT title, category, retail AS "Current Price", retail + (10/100) AS "New Price"
FROM books
WHERE category = 'COMPUTER';

但是,当我这样做的时候,我只能从电脑图书类别中得到结果,我需要所有类别的结果,并显示按类别计算的价格增长%。

我如何做到这一点,以便我可以创建下一栏为“新价格”,并显示所有的书籍,其零售价按类别的具体百分之增长?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-26 12:36:54

您可以使用一个CASE语句来完成这个任务。

代码语言:javascript
复制
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

我没有填写所有的类别,您需要检查以确保您知道它们在您的字段中是如何格式化的。

票数 2
EN

Stack Overflow用户

发布于 2018-11-08 02:26:33

这样做:

代码语言:javascript
复制
SELECT title, category, retail AS "Current Price", retail + (10/100) AS "Revised Price"
FROM books
WHERE category IN ('COMPUTER', 'FITNESS', 'SELF HELP');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29877648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档