Reputation:
Let's say I have a table:
SELECT SUM(quantity) AS items_sold_since_date,
product_ID
FROM Sales
WHERE order_date >= '01/01/09'
GROUP BY product_ID
This returns a list of products with the quantity sold since a particular date. Is there a way to select not only this sum, but ALSO the sum WITHOUT the where condition? I'd like to see sales since a particular date for each product alongside all (not date limited) sales.
Upvotes: 13
Views: 35386
Reputation: 6854
you can write
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
Upvotes: 0
Reputation: 1030
You could use GROUP BY to split up the Sales based on date. In Oracle you could say:
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;
Upvotes: 0
Reputation:
If you like to see total sales alongside, then you would use sum(sale_amt), and in the group by add the sale_amt. I hope it helps.
Upvotes: 0
Reputation: 415765
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
Upvotes: 33
Reputation: 33445
something like this?:
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
Upvotes: 0