我有一个包含两列的表格 - 客户 ID 和他们购买的产品数量。
我将使用什么 SQL 语句来了解有多少客户购买了 1 种或更多产品、2 种或更多产品、3 种或更多产品等?
这可以在不使用交叉连接的情况下完成吗(我使用的是不支持该功能的 google bigquery)。
最佳答案
如果您确实需要分别计算购买“一个或更多”和“两个或更多”的客户数量,您将需要一个 CASE
表达式:
SELECT SUM(CASE WHEN NumOfProducts >= 1 THEN 1 ELSE 0 END) AS Purchased_1_or_more
, SUM(CASE WHEN NumOfProducts >= 2 THEN 1 ELSE 0 END) AS Purchased_2_or_more
, SUM(CASE WHEN NumOfProducts >= 3 THEN 1 ELSE 0 END) AS Purchased_3_or_more
, SUM(CASE WHEN NumOfProducts >= 4 THEN 1 ELSE 0 END) AS Purchased_4_or_more
, SUM(CASE WHEN NumOfProducts >= 5 THEN 1 ELSE 0 END) AS Purchased_5_or_more
FROM Customers
依此类推,无论您想要多少类别。
关于mysql - 对 SQL 中的一系列值进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17286987/