2013-01-22 7 views
5

count_temp tableZählwert von Paarwerten in der Tabelle unter

nehmen die oben als einen Ausgang eines Probentisches, ich brauche eine SQL-Abfrage, die „2“ als den Zählwert aus der Tabelle ergibt.

Ich habe versucht, in der ersten Zeile bis 4, und war in Ordnung; aber mehr Zeilen zeigt falsche o/p. mein älterer Code ist

SELECT COUNT(*)/2 
    FROM 
    (SELECT sentby,sentto 
    FROM 
      (SELECT DISTINCT sentby, sentto FROM count_temp) 
    WHERE sentto IN 
      (SELECT DISTINCT sentby FROM count_temp) 
     AND sentby IN 
      (SELECT DISTINCT sentto FROM count_temp) 
    ) ; 

Vielen Dank im Voraus :) und geschätzt.

Antwort

1

Ihre Suche:

with cte as (
select distinct m1.sentby , m1.sentto 
from m m1 
inner join m m2 
    on m1.sentby = m2.sentto and 
     m2.sentby = m1.sentto 
) 
select count(*)/2 from cte; 

test it at sqlfiddle

Auch vereinfacht:

select count(distinct m1.sentby)/2 
from m m1 
inner join m m2 
    on m1.sentby = m2.sentto and 
     m2.sentby = m1.sentto 
1

Versuchen Sie dieses:

SELECT count(*)/2 
    FROM 
     (SELECT sentby, 
       sentto, 
       max(rownum) AS rn 
     FROM count_temp 
     GROUP BY sentby, 
       sentto) a, 
     (SELECT sentby, 
       sentto, 
       max(rownum) AS rn 
     FROM count_temp 
     GROUP BY sentby, 
       sentto) b 
    WHERE a.rn != b.rn 
     AND a.sentby = b.sentto 
     AND a.sentto = b.sentby; 
Verwandte Themen