查询每个产品的总价值

时间:2019-08-21 15:19:28

标签: sql

我运行了以下查询,以获取在价格大于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 |
+---------+---------+-------+

3 个答案:

答案 0 :(得分:0)

价格值似乎与产品相关,但名称不一,因此您在不同级别上按级别发出了乘数

您可以

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 

答案 1 :(得分:0)

我不知道您的预期结果,但您可以使用相同的查询,只是您应按名称和产品分组以获取每个产品的总价值(demo

SELECT name, product, count(product) as TotalQuantityPurchased, 
SUM(price) as PriceOver100
FROM [order]
GROUP BY name, product
HAVING SUM(price)>100;

答案 2 :(得分:0)

假设您需要一个包含客户以及该客户购买的产品总数的列表,在此列表中,我们将仅计算价格超过100的产品。在这种情况下,查询应为:

epoll

在这种情况下,考虑到您在问题中给出的表格,输出将是:

SELECT name, 
       count(product) as TotalQuantityPurchased
FROM [order] 
WHERE price > 100
GROUP BY name
;

您对问题的查询所做的事情是:考虑到已购买价格超过100的客户购买的产品总数,并考虑其所有购买的总和。