在SQL中计算多列中的不同值对

时间:2013-09-10 09:56:12

标签: sql count distinct

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

示例:

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

类似的东西:

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

5 个答案:

答案 0 :(得分:26)

要计算idnameaddress的唯一组合数:

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

答案 1 :(得分:8)

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

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

答案 2 :(得分:5)

我刚想出的另一个(可能不是生产就绪或推荐的)方法是将值连接到一个字符串并以不同的方式计算这个字符串:

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

答案 3 :(得分:1)

您还可以执行以下操作:

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

答案 4 :(得分:0)

必须返回唯一物料清单(BOM)的数量,其中每个BOM都具有多个位置,所以我会这样:

> df2
   col1 col2 col3 col4  col5 col6 col7             col8             col9
1    ab   ac  abc abcd abcdd    0    0               NA               NA
2    bc   bd   bd   bc    bd    3 2 col3, col4, col5       col1, col2
3    cd   ce  cde cdef cdeff    0    0               NA               NA
4    de   df  def defg defgg    0    0               NA               NA
5    ef   ef  efg   ef    ef    3 2 col2, col4, col5       col1, col3
6    fg   fh  fgh fghj fghjj    0    0               NA               NA
7    gh   gj  ghj ghjk ghjkk    0    0               NA               NA
8    hj   hk  hjk hjkl hjkll    0    0               NA               NA
9    jk   jl  jkl jklm jklmm    0    0               NA               NA
10   kl   km  klm klmn klmnn    0    0               NA               NA
11   lm   ln  lmm lmmo lmmoo    0    0               NA               NA
12   mn   mo  mno mnop mnopp    0    0               NA               NA
13   no   np  nop nopr noprr    0    0               NA               NA
14   op   or  opr oprs oprss    0    0               NA               NA
15   pr   ps  prs prst prstt    0    0               NA               NA
16  xxx  xyz  aaa  xxx   aaa    2  3       col4, col5 col1, col2, col3

给出t_pono是smallint数据类型,而t_item是varchar(16)数据类型