Агрегатные функции SQL - PullRequest
1 голос
/ 04 февраля 2009

У меня есть вопрос, похожий на этот SQL products / productsales

Я хочу сделать тот же запрос, но вместо того, чтобы просто проверять количество, я хочу проверить «итого» (т.е. количество * цена). «цена» - это поле в таблице продаж.

вот оригинальный запрос, предложенный по этой ссылке:

SELECT p.[name]
 FROM products p
 WHERE p.product_id in (SELECT s.product_id
     FROM productsales s
     WHERE s.[date] between @dateStart and @dateEnd
     GROUP BY s.product_id
     HAVING Sum(s.quantity) > @X )

поэтому вместо Sum (s.quantity) мне нужно иметь (s.quantity * s.price) для КАЖДОЙ ПРОДАЖИ, которая будет добавлена, а затем сравнена с @X. (цена может быть разной для каждой продажи)

Ответы [ 2 ]

1 голос
/ 04 февраля 2009
HAVING (Sum(s.quantity*s.price)) > @X

может сделать трюк?

0 голосов
/ 04 февраля 2009

(ответ от Cagcowboy был помечен как принятый, но в комментарии, похоже, указано, что он не работает, так что это другой подход)

Этот код использует производную таблицу, чтобы сначала определить «итоги» для каждого продукта, а затем группировать и т. Д. Поверх этого уровня.

SELECT p.name from products p
WHERE p.product_id IN
    (SELECT product_id from 
        (SELECT product_id, (quantity * price) as total
         FROM productsales WHERE date between @dateStart and @dateEnd) as s
    GROUP by s.product_id
    HAVING sum(total) > @x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...