如何查找 mysql table 中的用户数?

How to find no of users in mysql table?

我有 table 如下所示

A       B    C    D 
part1   p    NA   NA
part2   NA   NA    p
Part3   p     p    NA

我必须创建 table 第 1 部分用户、第 2 部分用户和第 3 部分用户。 p代表用户。

我已经为第 1 部分用户进行了如下尝试,但将所有第 1 部分、第 2 部分和第 3 部分用户都作为 1。

SELECT count(distinct A) as no_of_part1_users 
    FROM table1
    WHERE (A="part1" AND B="x") OR (A="part1" AND C="x") OR (A="part1" AND D="x");

我得到如下输出:

no_of_part1_users
1

我对第 2 部分和第 3 部分用户应用了相同的逻辑,但我得到了相同的输出。

期望的输出:

no_of_part1_users   no_of_part2_users no_of_part3_users
1                        1                 2

要生成您想要的结果,您可以使用 FROM-less SELECT 和每个计数的子查询。每个子查询都使用派生的 table,使用 UNION ALL 将列转换为行。然后可以对其进行过滤并进行计数。

SELECT (SELECT count(*)
               FROM (SELECT b u
                            FROM table1
                            WHERE a = 'part1'
                     UNION ALL
                     ...
                     UNION ALL
                     SELECT d u
                            FROM table1
                            WHERE a = 'part1') x
               WHERE u <> 'NA') no_of_part1_users,
       ...
       (SELECT count(*)
               FROM (SELECT b u
                            FROM table1
                            WHERE a = 'part3'
                     UNION ALL
                     ...
                     UNION ALL
                     SELECT d u
                            FROM table1
                            WHERE a = 'part3') x
               WHERE u <> 'NA') no_of_part3_users;

但是,是的,这很丑陋。你的设计确实很糟糕。你应该真正解决这个问题。关系 table 不是电子表格!