我有3张桌子
子
ctn region
1 a
1 a
2 b
3 c
8 n
MTA
ctn
1
1
2
3
4
RCR
ctn
1
1
2
3
4
5
我需要找到每个地区的不同用户数量。在这种情况下,结果将是
RES
a 1
b 1
c 1
n 1
null 2
如果用户不在任何地区,那么我需要知道有多少用户喜欢他。
到目前为止我所拥有的。
WITH com as(
SELECT DISTINCT ctn
FROM (
SELECT ctn
FROM mta
UNION ALL
SELECT ctn
FROM rcr
) c
)
, distinct_ctn as(
SELECT DISTINCT sub.ctn, com.ctn, sub.region
FROM sub
FULL JOIN com
ON sub.ctn = com.ctn
)
SELECT region, count(*)
FROM distinct_ctn
GROUP BY region;
答案 0 :(得分:0)
有一个子查询,您可以使用UNION
从mta和rcr表中获取不同的cnt值。
RIGHT JOIN
表子,最后是GROUP BY
加入结果。
select s.region, count(distinct u.ctn)
from sub s
right join (select ctn from mta
union
select ctn from rcr) u
on s.ctn = u.ctn
group by s.region