将上面作为样本表的输出, 我需要一个sql查询,结果“2”作为表中的计数。
我已经尝试了最多4次发送列,并且没事; 但是更多的行显示不正确的o / p。我的旧代码是
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 )
) ;
提前致谢:)并赞赏。
答案 0 :(得分:1)
您的查询:
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;
另外,简化:
select count( distinct m1.sentby ) / 2
from m m1
inner join m m2
on m1.sentby = m2.sentto and
m2.sentby = m1.sentto
答案 1 :(得分:1)
试试这个:
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;