Matti Mäkitalo: Counter über 2 Spalten

Beitrag lesen

Hi,

ich habe eine Tabelle mit

userid_1  userid_2
23        45
53        23
23        45
45        23
45        23
23        77

was ich möchte wäre einen counter der die Häufigkeit zählt und gruppiert - so dass nur eine Paarung von userid_1 und user_id2 vorkommt:

userid_1  userid_2  counter
23        45        4
53        23        1
23        77        1

ich würde zunächst mal die einzelnen Tupel nach Größe sortieren:
Also z.B.

SELECT  
  LEAST(userid_1, userid_2) AS u1,  
  GREATEST(userid_1, userid_2) AS u2  
FROM yourtable

Das Ergebnis sollte nun sein:

userid_1  userid_2
23        45
23        53
23        45
23        45
23        45
23        77

Hiernach kannst du nun einfach gruppieren:

SELECT  
  t.u1,  
  t.u2,  
  COUNT(*)  
FROM (  
SELECT  
  LEAST(userid_1, userid_2) AS u1,  
  GREATEST(userid_1, userid_2) AS u2  
FROM yourtable  
) t  
GROUP BY t.u1, t.u2

Ungetestet.

Bis die Tage,
Matti