【问题标题】:SQL - Counting the number of rows that contain two distinct fieldsSQL - 计算包含两个不同字段的行数
【发布时间】:2012-07-19 14:37:48
【问题描述】:

是否有任何方法可以获取 fieldB 的计数,但仅限于 fieldA 和 fieldB 组合唯一的情况?

例如

fieldA     fieldB
X          A
X          B
Y          C
X          B
Y          A

字段 B 的计数将返回:

A = 2
B = 1
C = 1

我尝试过使用“SELECT DISTINCT fieldA, COUNT(fieldB) AS count FROM table GROUP BY fieldB”。这似乎返回了 fieldB 中所有值的计数,而不仅仅是具有唯一 fieldA 的值。

我希望我正在尝试做的事情是有意义的,我发现很难用语言表达。我想用 SQL 做的事情可能吗?

谢谢

【问题讨论】:

    标签: mysql database


    【解决方案1】:

    应该是

    SELECT fieldB, COUNT(DISTINCT  fieldA, fieldB) AS count 
    FROM table 
    GROUP BY fieldB;
    

    【讨论】:

    • 感谢所有快速回答,这只是我尝试过的第一个,并且看起来效果很好。 - 谢谢
    【解决方案2】:
    SELECT   fieldA, COUNT(fieldB) AS count from
    (SELECT DISTINCT fieldA, fieldB FROM table)a
    FROM a GROUP BY a.fieldB
    

    【讨论】:

      【解决方案3】:

      我想这会让你到达那里

      Declare @mytbl table (fieldA char(1), fieldB char(1))
      insert into @mytbl
      select 'X','A'
      union all select 'X','B'
      union all select 'Y','C'
      union all select 'X','B'
      union all select 'Y','A'
      
      select COUNT(*), LEFT(myfields,1)
      from 
      (
      select distinct fieldb + fielda as myfields
      from @mytbl
      group by fieldb + fielda
      ) a
      group by LEFT(myfields,1)
      

      返回

      2 安 1乙 1 C

      【讨论】:

        【解决方案4】:
        DECLARE @mytb table
        (
        fieldA varchar(10),
        fieldB varchar(10)
        );
        
        INSERT into @mytb values('X','A');
        INSERT into @mytb values('X','B');
        INSERT into @mytb values('Y','C');
        INSERT into @mytb values('X','B');
        INSERT into @mytb values('Y','A');
        
        SELECT fieldB,count(DISTINCT fieldA+fieldB) as count
        from @mytb
        group BY fieldB;
        
        
           fieldB     count
        ---------- -----------
            A          2
            B          1
            C          1
        

        【讨论】:

        • @RaphaëlAlthaus 抱歉,但它为 A 返回 2。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-08
        • 2023-03-07
        • 2018-06-13
        • 2020-09-24
        • 1970-01-01
        相关资源
        最近更新 更多