我是SQL和stackoverflow的新手,请原谅我的问题不重要。我在表中记录了客户购买数量,因此我希望统计购买数量在一定范围内的客户。
TABLE:
+-------------+----------------+
| customer_id | order_quantity |
+-------------+----------------+
| 123 | 10000 |
| 143 | 5000 |
| 999 | 200000 |
| 555 | 50000 |
+-------------+----------------+
目标是计算有多少客户购买<5000,订单数量在5000-50000和50000-100000之间。
我用过:
SELECT customer_id,
CASE
WHEN COUNT(order_quantity) < 5000
....
FROM purchases
这是不正确的(甚至不起作用)。
答案 0 :(得分:1)
您可以使用:
select (case when order_quantity < 5000 then '[0-5000)'
when order_quantity < 10000 then '[5000-10000)'
else '10000+'
end) as grp,
count(*) as num_purchases,
count(distinct customer_id) as num_customers
from t
group by grp
order by min(order_quantity);
如果某个客户在给定的组中进行了多次购买,则不清楚是否要计算购买次数或客户数量。两者都做。