Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果利润为<;项目成本的55%?_Sql_Database - Fatal编程技术网

Sql 如果利润为<;项目成本的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

我是数据库的新手,我在书中遇到一个问题,我很难解决。假装我是这家书店的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 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!虽然这个代码片段可以解决这个问题,但它没有解释为什么或者如何回答这个问题。请,因为这确实有助于提高你的文章质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。标记者/审阅者: