mysql - 对 SQL 中的一系列值进行计数

标签 mysql sql google-bigquery

我有一个包含两列的表格 - 客户 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/

相关文章:

go - 将服务帐户 key 文件传递给 bigquery 客户端

google-bigquery - 获取对 BigQuery 上 View 的所有引用

php - 编写一条sql语句根据其他表中的列查询一个表?

java - 是否可以从 hibernate 动态添加存储过程?

mysql - cfquery 结果让我发疯

php - 如何在已有的MYSQL数据库表中添加列条目?

mysql - SQL 连接多次?

date - 将多个 GA 非抽样报表数据合并为一个数据集(查看)

mysql - 如何在 Dynamics CRM 的一份报表中使用两个预过滤(使用 CRMAF_ )?

java.sql.SQLException : No operations allowed after connection closed 异常