【问题标题】:Count of 2 distinct columns2 个不同列的计数
【发布时间】:2017-11-06 14:53:20
【问题描述】:

如何获得 2 列的计数,以便两列有不同的组合?

Select count(distinct cola, colb)

【问题讨论】:

  • 请发布所需的结果集。

标签: oracle


【解决方案1】:
SELECT  COUNT(*)
FROM    (
        SELECT  DISTINCT a, b
        FROM    mytable
        )

【讨论】:

    【解决方案2】:
    SELECT COUNT(1)
      FROM (
        SELECT DISTINCT COLA, COLB
          FROM YOUR_TABLE
        )
    

    【讨论】:

    • 他需要每列的计数。
    • @James:OP 说他想要两个列的不同组合的计数,为此我将包括 COUNT。
    【解决方案3】:

    另一种方法

    SELECT COUNT(DISTINCT COLA || COLB)
    FROM THE_TABLE
    

    http://www.sqlfiddle.com/#!4/c287e/2

    【讨论】:

    • 如果列一开始就不是字符串,那将无法正常工作。如果有一行 ColA = "abc" 和 ColB = "def" 以及另一行 ColA = "ab" 和 ColB = "cdef";它们将计为 1,而应计为 2。
    【解决方案4】:

    SELECT (select count(cola) from ...), (select count(colb) from ...) from ...

    你可能想看看这个:

    http://www.java2s.com/Code/Oracle/Aggregate-Functions/COUNTcolumnandCOUNTcountthenumberofrowspassedintothefunction.htm

    如果需要,您可以将Distinct 放入子查询中。

    【讨论】:

      【解决方案5】:

      在 Oracle DB 中,您可以连接列,然后依靠连接的字符串,如下所示:

      SELECT count(DISTINCT concat(ColumnA, ColumnB)) FROM TableX;
      

      在 MySql 中,您可以在 count 方法中添加列作为参数。

      SELECT count(DISTINCT ColumnA, ColumnB) FROM TableX;
      

      【讨论】:

        【解决方案6】:
        SELECT  COUNT(*)
        FROM    (
                SELECT  DISTINCT a, b
                FROM    mytable
                ) As Temp
        

        【讨论】:

        • 欢迎来到 Stack Overflow。一般而言,如果您要为此类较旧的问题提供新答案,则应确保您的答案明显不同于或优于现有答案。就目前而言,您的答案与先前的答案相同(给予或采取间距),并且基本上等同于另一个(COUNT(1)COUNT(*))。因此,你不太可能因为重复别人已经说过的话而获得很多回报。
        猜你喜欢
        • 2016-12-10
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 2021-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多