【问题标题】:Count(*) in SQL spanning multiple columnsSQL 中的 Count(*) 跨越多列
【发布时间】:2019-08-09 10:25:07
【问题描述】:

我有一张类似的桌子

我能否帮助我编写一个查询,该查询将连接 col1、col2 和 col3 并给出如下结果

我花了一个小时试图用我平庸的技能来解决这个问题,并且已经达到了一定程度。

select col1, count(*) 
from tableName 
group by col1

但我不知道如何加入所有三个列。

【问题讨论】:

    标签: sql count multiple-columns


    【解决方案1】:

    试试这个

    select
        col,
        count(*)
    from
        (select
             id,
             col1 as col
         from
             <table_name>
         union all
         select
             id,
             col2
         from
             <table_name>
         union all
         select
             id,
             col3
         from
             <table_name>)
    group by
        col
    

    【讨论】:

      【解决方案2】:

      您需要按 3 列并集的 col 进行分组:

      select t.col, count(*)
      from (
        select col1 col from tablename
        union all
        select col2 from tablename
        union all
        select col3 from tablename
      ) t
      group by t.col
      

      【讨论】:

        【解决方案3】:

        您应该使用UNION 将所有列中的值分组到一列。之后,你就可以计算数值了

        SELECT 
           col,
           count(*) as cnt
        FROM
          (SELECT col1 as col FROM table1
          UNION ALL
          SELECT col2 as col FROM table1
          UNION ALL
          SELECT col2 as col FROM table1) as t
        GROUP BY col
        

        【讨论】:

        • 这个工作就像一个魅力。感谢大家如此闪电般的快速响应。
        猜你喜欢
        • 2016-01-16
        • 2012-02-29
        • 2017-11-23
        • 2019-10-27
        • 1970-01-01
        • 2015-02-10
        • 1970-01-01
        • 1970-01-01
        • 2012-02-19
        相关资源
        最近更新 更多