2016-11-10 29 views
1

我有一個小桌子有3列:伯爵對AB和BA與第三個參數

+---------------------------+ 
| 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  | 

我想做什麼的就是數列3每一對新人的不同的值(第1欄的數量,第2列)得到。 我的問題是我無法得到處理doublelon(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 

回答

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); 
+0

THX了很多它的工作,我要去檢查文檔最不重要的! –