用第三个参数计算A-B和B-A对

时间:2016-11-10 23:00:11

标签: mysql duplicates

我有一个包含3列的小桌子:

+---------------------------+
| col 1 | col2  | col 3     |
+---------------------------+
|  A    | B     |    10     |
|  A    | B     |    20     |
|  B    | A     |    20     |
|  B    | C     |    10     |
|  B    | C     |    20     |
|  A    | C     |    10     |
|  C    | A     |    10     |

我想要的是计算每对(col 1,col 2)得到的第3列的不同值的数量。 我的问题是我无法处理双重因为(A,B)与(B,A)相同。

以下是我试图获得的结果:

+------------------------+
| col 1 | col 2 | count()|
+------------------------+
|  A    |  B    |  2     |  // OR BA : 2 
|  B    |  C    |  2     |  // OR CB : 2 
|  A    |  C    |  1     |  // OR CA : 1

1 个答案:

答案 0 :(得分:2)

我认为您需要count(distinct)least()以及greatest()

select least(col1, col2) as col1, greatest(col1, col2) as col2
       count(distinct col3) as cnt
from t
group by least(col1, col2), greatest(col1, col2);