如何计算 SQL 服务器中某些特定产品类型的收益?
How to calculate benefit of some specific product type in SQL Server?
所以,这是我的表格:
销售额
id
product_code
1
4536
2
4674
产品
product_code
product_name
price
real_price
4536
Red bull energy drink 300 ml
3,68
2,88
4674
Mac coffee 25 gr
2,59
2,10
我需要计算我从名称中带有“Red Bull”的产品中获得了多少收益。效益等于price-real_price.
预期输出:
product_name
benefit
Red bull energy drink 300 ml
4536,4
这是我尝试过的:
SELECT products.product_code,(price-real_price) as profit
FROM products
INNER JOIN sales
ON products.product_code = sales.product_code
outer apply (select count(*)
from sales as benefit
where product_name like '%red bull';
但是它没有给我想要的输出。
正如您所说,每一行都是一个已售出的数量,下面的查询就可以完成这项工作。
我建议最好在sales table.
中有一个数量栏
select
p.product_code,
p.product_name,
count(s.product_code) as quantity_sold,
sum( (p.price-p.real_price)*count(s.product_code) as total_profit
from products p
join sales s on s.product_code = p.product_code
where p.product_name like '%red bull'
group by
p.product_code,
p.product_name;
create table Sales (
id int,
product_code int)
create table Products(
product_code int,
product_name char(100),
price smallmoney,
real_price smallmoney)
insert into Sales values
(1, 4536),
(2, 4674),
(3, 4536) -- to have multiple sales for Red Bull
insert into Products values
(4536, 'Red bull energy drink 300 ml', 3.68, 2.88),
(4674, 'Mac coffee 25 gr', 2.59, 2.10)
select
p.product_name, sum(p.price - p.real_price) benefit
from Sales s join Products p on s.product_code = p.product_code
group by p.product_name
product_name
benefit
Mac coffee 25 gr
0.4900
Red bull energy drink 300 ml
1.6000
所以,这是我的表格:
销售额
id | product_code |
---|---|
1 | 4536 |
2 | 4674 |
产品
product_code | product_name | price | real_price |
---|---|---|---|
4536 | Red bull energy drink 300 ml | 3,68 | 2,88 |
4674 | Mac coffee 25 gr | 2,59 | 2,10 |
我需要计算我从名称中带有“Red Bull”的产品中获得了多少收益。效益等于price-real_price.
预期输出:
product_name | benefit |
---|---|
Red bull energy drink 300 ml | 4536,4 |
这是我尝试过的:
SELECT products.product_code,(price-real_price) as profit
FROM products
INNER JOIN sales
ON products.product_code = sales.product_code
outer apply (select count(*)
from sales as benefit
where product_name like '%red bull';
但是它没有给我想要的输出。
正如您所说,每一行都是一个已售出的数量,下面的查询就可以完成这项工作。
我建议最好在sales table.
select
p.product_code,
p.product_name,
count(s.product_code) as quantity_sold,
sum( (p.price-p.real_price)*count(s.product_code) as total_profit
from products p
join sales s on s.product_code = p.product_code
where p.product_name like '%red bull'
group by
p.product_code,
p.product_name;
create table Sales (
id int,
product_code int)
create table Products(
product_code int,
product_name char(100),
price smallmoney,
real_price smallmoney)
insert into Sales values
(1, 4536),
(2, 4674),
(3, 4536) -- to have multiple sales for Red Bull
insert into Products values
(4536, 'Red bull energy drink 300 ml', 3.68, 2.88),
(4674, 'Mac coffee 25 gr', 2.59, 2.10)
select
p.product_name, sum(p.price - p.real_price) benefit
from Sales s join Products p on s.product_code = p.product_code
group by p.product_name
product_name | benefit |
---|---|
Mac coffee 25 gr | 0.4900 |
Red bull energy drink 300 ml | 1.6000 |