我运行了以下查询,以获取在价格大于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 |
+---------+---------+-------+
答案 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的客户购买的产品总数,并考虑其所有购买的总和。