Запрос выбора SQL с двумя таблицами

Я борюсь с задачей. Мне нужно создать запрос выбора, который: Для каждой конкретной указанной даты показывает дату и доход, где доход – это количество проданных единиц, умноженное на цену за единицу (но ТОЛЬКО, если доход больше или равен 10 000) . Есть две таблицы: product и order. Товар содержит столбцы: тип единицы, цена. А заказ содержит столбцы: тип устройства, дата, число (количество проданных единиц).

Это моя попытка выбора запроса:

SELECT 
order.date, 
product.price*order.number AS revenue 
FROM product 
INNER JOIN 
order 
ON product.unittype = order.unittype 
WHERE product.price*order.number >= 10000;

Ни один из моих результатов даже не близок к 10 КБ (между 39 и 1,3 КБ), поэтому мне интересно, набрал ли я его неправильно или есть ли более эффективные способы его ввода?


person Thomas    schedule 19.09.2014    source источник
comment
Ваш вопрос кажется мне правильным, какой диалект вы используете? Оракул?   -  person Jean-François Savard    schedule 19.09.2014
comment
Чтобы устранить неполадки, разверните предложение select, чтобы отобразить значения цены и числа.   -  person Dan Bracuk    schedule 19.09.2014
comment
Не уверен, почему, так как это не должно иметь значения для внутреннего соединения, но вы можете попробовать сделать два выбора, например select date, revenue from (select order.date as date, product.price*order.number as revenue from product inner join order on product.unittype = order.unittype) where revenue >= 10000;   -  person eckes    schedule 19.09.2014


Ответы (1)


Если это предназначено для общего количества за день (а не для отдельной строки), вам нужен агрегат и предложение having:

SELECT 
order.date, 
SUM(product.price*order.number) AS revenue 
FROM product 
INNER JOIN 
order 
ON product.unittype = order.unittype 
GROUP BY     order.date
HAVING     SUM(product.price*order.number) >= 10000
person Nick.McDermaid    schedule 19.09.2014
comment
Может быть, если бы вы поставили ИМЕЮЩИЙ доход ›= 10000, это было бы более эффективно, нет? - person CMPS; 19.09.2014
comment
В SQL Server это не будет допустимым sql. Несмотря на это, не думаю, что это будет более эффективно (с точки зрения производительности) в любых обстоятельствах. - person Nick.McDermaid; 19.09.2014
comment
Спасибо, Ник. Это правильно, что я хотел подвести итог дня, и ваш пример дает мне гораздо более многообещающий результат! - person Thomas; 19.09.2014