【问题标题】:Count distinct value pairs in multiple columns in SQL在 SQL 中计算多列中的不同值对
【发布时间】:2013-09-13 23:29:38
【问题描述】:

什么查询会计算行数,但由三个参数区分?

例子:

Id      Name        Address 
==============================
1     MyName        MyAddress
2     MySecondName  Address2

类似:

select count(distinct id,name,address) from mytable

【问题讨论】:

  • 您使用的是哪个 DBMS?
  • 因为你包含了一个可能是主键的 id,所以所有的计数加起来就是一个...
  • id 是一个例子......无论如何都是坏例子
  • 也许“id”是一个不好的例子,但问题是有效的,并帮助我找到了答案。有一个 +1

标签: sql count distinct


【解决方案1】:

必须返回每个 BOM 有多个位置的唯一物料清单 (BOM) 的计数,我会做这样的事情:

select t_item, t_pono, count(distinct ltrim(rtrim(t_item)) + cast(t_pono as varchar(3))) as [BOM Pono Count]
from BOMMaster
where t_pono = 1
group by t_item, t_pono

假设 t_pono 是 smallint 数据类型,而 t_item 是 varchar(16) 数据类型

【讨论】:

    【解决方案2】:

    你也可以这样做:

    SELECT COUNT(DISTINCT id + name + address) FROM mytable
    

    【讨论】:

      【解决方案3】:

      我刚想出的另一种(可能不是生产就绪或推荐的)方法是将值连接到一个字符串并区分该字符串的计数:

      SELECT count(DISTINCT concat(id, name, address)) FROM mytable;
      

      【讨论】:

      • 正如写的那样,这只会起作用 id、name 和 address 都是相同的数据类型。如果其中任何一个属于不同的数据类型,则必须使用 cast() 或 convert() 函数
      【解决方案4】:

      要计算idnameaddress 的唯一组合的数量:

      SELECT Count(*)
      FROM   (
              SELECT DISTINCT
                     id
                   , name
                   , address
              FROM   your_table
             ) As distinctified
      

      【讨论】:

        【解决方案5】:

        获取所有不同的idnameaddress 列并计算结果行数。

        SELECT COUNT(*) FROM mytable GROUP BY id, name, address
        

        【讨论】:

        • ...这不会为每个组返回一行吗?也许我误解了这个问题......
        • 没有。 GROUP BY 只是将多行与同一行中的分组列中的相同值分组。因此,如果您有 100 行具有相同的 name 值,是的,它将返回单行,但如果您有 100 行具有 10 个不同值的 name 列(而您 GROUP BY name),它将返回 10 行,每行都有一个不同的 name
        • 这完全是错误的
        • @Dzhuneyt,我认为这不是操作人员所要求的。我认为他想要的是唯一元组的数量,而不是每个唯一元组的计数。
        猜你喜欢
        • 2022-01-09
        • 2023-03-08
        • 2015-05-30
        • 1970-01-01
        • 1970-01-01
        • 2019-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多