2013-01-22 20 views
5

count_temp tableprzy liczyć od wartości pary w tabeli

ma wyżej jako wyjście tabeli próbki muszę mieć SQL, której wyniki „2” jako liczby z tabeli.

Próbowałem próbować podczas wysyłania kolumny do 4, i było w porządku; , ale więcej wierszy pokazuje niepoprawne o/p. mój starszy kod jest podany:

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

Z góry dziękuję :) i doceniam.

Odpowiedz

1

Zapytanie:

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

także uproszczenia:

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

Spróbuj tego:

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; 
Powiązane problemy