2015-04-23 4 views
1

Я делаю домашнее задание для моего класса, и я не могу понять, как правильно ответить на этот вопрос:SQL: Повторение данных в РЕГИСТРИРУЙТЕСЬ

«Определить, какие книги генерируют менее 55% прибыли и сколько копий из этих книг были проданы. Обобщите ваши выводы для управления и включите копию запроса, используемого для извлечения данных из таблиц базы данных ».

Я попытался сделать снимок, но я не могу показаться, чтобы он выглядел так, как я этого хочу. У него всегда есть данные, которые, похоже, не совпадают. Ниже мой код:

SELECT isbn, b.title, b.cost, b.retail, o.quantity "# of times Ordered", 
    ROUND(((retail-cost)/retail)*100,1)||'%' "Percent Profit", 
    o.quantity "# of times Ordered" 
FROM books o JOIN orderitems o USING(isbn); 

Он работает в том смысле, что я получаю данные мне нужно, но он приходит так:

enter image description here

У меня есть теория, что, так как таблица «Заказать Элементы "имеет несколько заказов с одинаковым значением isbn и разными количествами, которые он выбирает для всех. Есть ли способ их объединить? Если бы кто-нибудь не помог мне избавиться от избыточных данных, вызванных JOIN?

Спасибо!

+1

Вы пометили это с помощью 'mysql' и' sql-server' еще в своем вопросе, используя 'oracle'. Пожалуйста, отметьте свой вопрос правильно. –

+0

Можете ли вы предоставить некоторые выборочные данные для 'book' и' orderitems' и ожидаемого результата? –

+0

Вы можете торговать и стоить SUM ... тогда группа ISBN .. надеюсь, это поможет вам !. –

ответ

0

Мне приходилось делать подобные вещи в SQL Server/MySQL. Вы должны группе столбцов, в которых вы видите неоднократных данные, которые вы не заботитесь о том, и вам нужно SUM поля, значение которого является важными для вас, вероятно, что-то вроде этого ...

SELECT isbn, b.title, b.cost, b.retail, o.quantity "# of times Ordered", 
    ROUND(((retail-cost)/retail)*100,1)||'%' "Percent Profit", 
    SUM(o.quantity) "# of times Ordered" 
FROM books o JOIN orderitems o USING(isbn) 
GROUP BY isbn, b.title, b.cost, b.retail; 

Если вы нужно больше информации, зайдите сюда и искать SUM: https://docs.oracle.com/javadb/10.6.1.0/ref/rrefsqlj32654.html

0

вы сосредоточены на книги, так что вам нужно сгруппировать этот запрос на isbn, b.title, b.cost, b.retail и ROUND(((retail-cost)/retail)*100,1).

Чтобы получить общее количество копий для каждой книги, необходимо SUM(o.quantity).

-1

SELECT название, сумма (количество), раунд (((розничная цена)/розничная торговля) * 100, 0) Percent_Profit Из книг NATURAL JOIN orderitems группа по названию, стоимости, в розницу;

+0

Ваш ответ плохо отформатирован (см. http: // stackoverflow .com/edit-help), не объясняет, почему он должен работать, и уже есть ответ, который делает все это и принимается. Пожалуйста, напишите ответ в таком случае, если у вас есть ценная информация для добавления (возможно, если новая версия чего-то была выпущена с новыми функциями). –