【发布时间】:2016-04-11 21:22:26
【问题描述】:
除了以下特征表之外,我还有一个典型的用户表
特点:
-----------------------
| userId | feature |
-----------------------
| 1 | account |
| 1 | hardware |
| 2 | account |
| 3 | account |
| 3 | hardware |
| 3 | extra |
-----------------------
基本上,我正在尝试获取一些计数以用于报告目的。特别是,我试图找出拥有帐户和硬件的用户数量以及帐户总数。
我知道我可以执行以下操作来获取帐户总数
SELECT
COUNT(DISTINCT userId) as totalAccounts
FROM features
WHERE feature = "account";
我不确定如何获得同时拥有帐户和硬件的用户数量。在这个示例数据集中,我要查找的数字是 2。用户 1 和 3 同时拥有帐户和硬件。
我希望在单个查询中执行此操作。可能使用 CASE(下面的 totalAccounts 示例):
SELECT
COUNT(DISTINCT(CASE WHEN feature = "account" THEN userId END)) as totalAccounts,
COUNT( ? ) as accountsWithHardware
FROM features;
【问题讨论】:
标签: mysql sql count many-to-many distinct