SQL Выбор нескольких сумм? - PullRequest
9 голосов
/ 05 мая 2009

Допустим, у меня есть таблица:

SELECT  SUM(quantity) AS items_sold_since_date,
        product_ID
FROM    Sales
WHERE order_date >= '01/01/09'
GROUP BY product_ID

Возвращает список продуктов с количеством, проданным с определенной даты. Есть ли способ выбрать не только эту сумму, но также сумму без условия where? Я хотел бы видеть продажи с определенной даты для каждого продукта наряду со всеми (без ограничения по дате) продажами.

Ответы [ 5 ]

24 голосов
/ 05 мая 2009
SELECT  SUM(CASE WHEN order_date >= '01/01/09' THEN quantity ELSE 0 END) AS items_sold_since_date,
        SUM(quantity) AS items_sold_total,
        product_ID
FROM    Sales
GROUP BY product_ID
0 голосов
/ 05 мая 2009

Вы можете использовать GROUP BY, чтобы разделить продажи на основе даты. В Oracle вы можете сказать:

select count(*)
      ,case when order_date >= '01/01/09' then 'after' else 'before' end
from   log 
group by case when order_date >= '01/01/09' then 'after' else 'before' end;
0 голосов
/ 05 мая 2009

Если вы хотите увидеть общий объем продаж, вы должны использовать sum (sale_amt), а в группе добавить sale_amt. Надеюсь, это поможет.

0 голосов
/ 05 мая 2009

как то так?:

SELECT  SUM(quantity) AS items_sold_since_date,
        total_items_sold = (SELECT SUM(quantity) from Sales GROUP BY product_ID),
        product_ID
FROM    Sales
WHERE order_date >= '01/01/09'
GROUP BY product_ID
0 голосов
/ 05 мая 2009

Вы можете написать

SELECT  SUM(quantity) AS items_sold_since_date,(SELECT  SUM(quantity) AS items_sold_since_date FROM    Sales
GROUP BY product_ID) as items_sold,
        product_ID
FROM    Sales
WHERE order_date >= '01/01/09'
GROUP BY product_ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...