Sql 查询每个产品的总价值
我已经运行了下面的查询,以获得在价格大于100的情况下购买每种产品的总购买量的客户列表。但是,我遇到了一个问题,即添加一列每个产品的总价值TotalQuantityPurchased*价格:Sql 查询每个产品的总价值,sql,Sql,我已经运行了下面的查询,以获得在价格大于100的情况下购买每种产品的总购买量的客户列表。但是,我遇到了一个问题,即添加一列每个产品的总价值TotalQuantityPurchased*价格: SELECT name, count(product) as TotalQuantityPurchased, SUM(price) as PriceOver100 FROM [order] GROUP BY name HAVING SUM(price)>100; 以下是原始数据: +------
SELECT name, count(product) as TotalQuantityPurchased,
SUM(price) as PriceOver100
FROM [order]
GROUP BY name
HAVING SUM(price)>100;
以下是原始数据:
+---------+---------+-------+
| name | product | price |
+---------+---------+-------+
| Kathy | A | 1 |
| Kathy | B | 150 |
| Kathy | B | 150 |
| Chung | C | 120 |
| Peter | D | 40 |
| Peter | E | 210 |
| Chris | A | 1 |
| Chris | W | 90 |
| William | A | 1 |
| William | K | 20 |
| William | K | 20 |
| William | N | 350 |
| Tina | K | 500 |
| Tina | P | 160 |
+---------+---------+-------+
价格值似乎与产品相关,而不是名称,因此您必须按级别对不同组的值进行乘法 你可以
SELECT name, product, count(product) as TotalQuantityPurchased, count(product) * price sum_price
SUM(price) as PriceOver100
FROM [order]
GROUP BY name, product
HAVING SUM(price)>100;
然后
select name, sum(TotalQuantityPurchased), sum(sum_price)
from (
SELECT name, product, count(product) as TotalQuantityPurchased, count(product) * price sum_price
SUM(price) as PriceOver100
FROM [order]
GROUP BY name, product
HAVING SUM(price)>100;
) t
group by name
在不知道您的预期结果的情况下,我认为您可以使用相同的查询,只是您应该按名称和产品进行分组,以获得每个产品的总价值
假设您需要一份包含客户和该客户购买的产品总数的列表,其中我们只计算价格高于100的产品。在这种情况下,查询应为:
SELECT name,
count(product) as TotalQuantityPurchased
FROM [order]
WHERE price > 100
GROUP BY name
;
在这种情况下,考虑到您就问题给出的表格,输出将为:
Name TotalQuantityPurchased
Kathy 2
Chung 1
Peter 1
William 1
Tina 2
您对问题中的查询所做的是:计算从已购买超过100美元的客户处购买的产品的总数量,并考虑其所有购买的总和。更新您的问题并显示预期结果。。
Name TotalQuantityPurchased
Kathy 2
Chung 1
Peter 1
William 1
Tina 2