【问题标题】:SQL, count in multiple columns then group bySQL,在多列中计数,然后分组
【发布时间】:2012-09-03 11:14:24
【问题描述】:

我试图在多列中进行计数,然后按任何列中出现相同数据的总和进行分组

Source data table:

P1  P2  P3
-----------
a   b   
a   a   a
b   c   
a   b   b
b   a

我希望它显示如下内容:

Desired query output:

     Total
   -------------
a |    6
b |    5
c |    1

【问题讨论】:

    标签: sql ms-access count group-by


    【解决方案1】:

    您可以使用联合查询

    SELECT x.f1,Count(x.f1) FROM
    (SELECT p1 As F1 FROM table
     UNION ALL
     SELECT p2 As F1 FROM table
     UNION ALL
     SELECT p3 As F1 FROM table) x
    GROUP BY x.f1
    

    【讨论】:

    • 如果你想避免 NULL,那么你应该有一个 where 子句来删除 NULL 值。
    【解决方案2】:

    您可以union all 子查询和外部查询中的记录,count 每个值。

    SELECT b.a, COUNT(b.a)
    FROM
        (
            SELECT P1 a
            FROM tableName
            UNION ALL
            SELECT P2 a
            FROM tableName
            UNION ALL
            SELECT P3 a
            FROM tableName
        ) b
    GROUP BY b.a
    

    【讨论】:

    • 您使用了 UNION 可以消除重复。
    猜你喜欢
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 1970-01-01
    • 2016-11-26
    • 2022-08-05
    • 1970-01-01
    • 2018-08-17
    相关资源
    最近更新 更多