Sql 如果利润为<;项目成本的55%?
我是数据库的新手,我在书中遇到一个问题,我很难解决。假装我是这家书店的DBA 我需要确定哪些书的利润低于55%,以及这些书的销量。以下是我尝试过的:Sql 如果利润为<;项目成本的55%?,sql,database,Sql,Database,我是数据库的新手,我在书中遇到一个问题,我很难解决。假装我是这家书店的DBA 我需要确定哪些书的利润低于55%,以及这些书的销量。以下是我尝试过的: SELECT title, COUNT(*) FROM books WHERE (retail-cost) >= .55 * cost group by title; 但当我运行它时,我得到的是: DATABASE IMPLEMENTATION 1 PAINLESS CHILD-REARING 1 HOW TO GET FASTER PI
SELECT title, COUNT(*)
FROM books
WHERE (retail-cost) >= .55 * cost group by title;
但当我运行它时,我得到的是:
DATABASE IMPLEMENTATION 1
PAINLESS CHILD-REARING 1
HOW TO GET FASTER PIZZA 1
SHORTEST POEMS 1
BIG BEAR AND LITTLE DOVE 1
BODYBUILD IN 10 MINUTES A DAY 1
HOLY GRAIL OF ORACLE 1
HOW TO MANAGE THE MANAGER 1
COOKING WITH MUSHROOMS 1
BUILDING A CAR WITH TOOTHPICKS 1
显然,这是不对的。我该怎么做
以下是我的表格结构:
CREATE TABLE Books
(ISBN VARCHAR2(10),
Title VARCHAR2(30),
PubDate DATE,
PubID NUMBER (2),
Cost NUMBER (5,2),
Retail NUMBER (5,2),
Discount NUMBER (4,2),
Category VARCHAR2(12),
CONSTRAINT books_isbn_pk PRIMARY KEY(isbn),
CONSTRAINT books_pubid_fk FOREIGN KEY (pubid)
REFERENCES publisher (pubid));
CREATE TABLE ORDERITEMS
( Order# NUMBER(4),
Item# NUMBER(2),
ISBN VARCHAR2(10),
Quantity NUMBER(3) NOT NULL,
PaidEach NUMBER(5,2) NOT NULL,
CONSTRAINT orderitems_pk PRIMARY KEY (order#, item#),
CONSTRAINT orderitems_order#_fk FOREIGN KEY (order#)
REFERENCES orders (order#) ,
CONSTRAINT orderitems_isbn_fk FOREIGN KEY (isbn)
REFERENCES books (isbn) ,
CONSTRAINT oderitems_quantity_ck CHECK (quantity > 0) );
试试下面这句话:
SELECT Title, COUNT(*)
FROM books
WHERE (retail-cost) >= (0.55 * (retail-cost))
group by Title;
试试下面这句话:
SELECT Title, COUNT(*)
FROM books
WHERE (retail-cost) >= (0.55 * (retail-cost))
group by Title;
你需要加入看看你的书卖了多少
SELECT b.ISBN, b.Title, COUNT(ISBN)
FROM books AS b
INNER JOIN ORDERITEMS AS oi ON oi.ISBN = b.ISBN
WHERE Retail >= .55 * Cost
GROUP BY b.ISBN, b.Title;
你需要加入看看你的书卖了多少
SELECT b.ISBN, b.Title, COUNT(ISBN)
FROM books AS b
INNER JOIN ORDERITEMS AS oi ON oi.ISBN = b.ISBN
WHERE Retail >= .55 * Cost
GROUP BY b.ISBN, b.Title;
在您发布的请求中,
。。。计数(*)。。。group by title
返回表中每个标题的行数,这就是为什么总是获得1。您要做的是对orderItems中的数量求和,并在TableBooks中获得isbn匹配值的标题。我会这样做:
select Books.title, sum(ORDERITEMS.Quantity) as numberOfSales from ORDERITEMS
left join Books
on ORDERITEMS.isbn = Books.isbn and Books.cost <= (retail-cost/.55)
group by title
从ORDERITEMS中选择Books.title、sum(ORDERITEMS.Quantity)作为numberOfSales
左联书
OnOrderItems.isbn=您发布的请求中的Books.isbn和Books.cost。。。计数(*)。。。group by title
返回表中每个标题的行数,这就是为什么总是获得1。您要做的是对orderItems中的数量求和,并在TableBooks中获得isbn匹配值的标题。我会这样做:
select Books.title, sum(ORDERITEMS.Quantity) as numberOfSales from ORDERITEMS
left join Books
on ORDERITEMS.isbn = Books.isbn and Books.cost <= (retail-cost/.55)
group by title
从ORDERITEMS中选择Books.title、sum(ORDERITEMS.Quantity)作为numberOfSales
左联书
on ORDERITEMS.isbn=Books.isbn和Books.cost选择isbn、标题、金额(数量)
从书本使用(ISBN)连接订单项
其中(零售成本)/成本<代码>选择ISBN、标题、金额(数量)
从书本使用(ISBN)连接订单项
WHERE(RETAIL-COST)/COST WHERE语句看起来不对:我假设RETAIL-COST和COST是两个独立的字段?您的表结构是什么?如果要计算销售额,我猜它位于另一个字段中table@scraaappy我添加了我认为需要的表格。我只需要计算一下(isbn)你认为呢?你存储的是哪个表<代码>零售成本代码>?where语句看起来是错误的:我假设零售成本和成本是两个独立的字段?你的表结构是什么?你想计算销售额,我想它位于另一个表中table@scraaappy我添加了我认为需要的表格。我只需要数一数(isbn)你认为呢?你存储了哪张表的零售成本?这很有意义。谢谢你的帮助!这是有道理的。谢谢你的帮助!请使用链接解释此代码的工作原理,不要只给出代码,因为解释更有可能帮助未来的读者。欢迎使用堆栈溢出!虽然这个代码片段可以解决这个问题,但它没有解释为什么或者如何回答这个问题。请,因为这确实有助于提高你的文章质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。标记者/审阅者:请使用链接解释此代码的工作原理,不要只给出代码,因为解释更有可能帮助未来的读者。欢迎使用Stack Overflow!虽然这个代码片段可以解决这个问题,但它没有解释为什么或者如何回答这个问题。请,因为这确实有助于提高你的文章质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。标记者/审阅者: