我希望你能帮我。
我所处的情况是,我首先需要对基金和按政策分组进行计数。一旦我做到了,我需要把政策的数量放在基金数量的范围内。
这是可用的数据,在那里你可以看到与相关的政策和不同的资金
**PolicyNum Fund**
1201 AB
1202 AC
1203 AB
1203 AC
1203 AD
1204 AB
1204 BC
1204 AC
1204 AD
1204 AE
1204 AF
现在我需要做一个按政策分组的基金计数。我已经用这个查询做到了:
select fv, policy, count(distinct fv.fund)
from policy_fund fv
group by fv.policy
order by count(distinct fv.fund) desc
使用以上代码后,将出现以下内容这是一个视图,您可以看到与每个政策相关的资金数量
**Policy No. of Funds**
1201 1
1202 1
1203 3
1204 6
现在,问题的部分,我想触及这个问题,即基金数量的范围,以及有多少政策属于该基金范围:
实现基金数量范围以及每个范围中有多少政策的视图所需的帮助
**Range of Number of funds Number of policies**
0 to 1 2
2 to 3 1
4 to 5 0
5 to 6 1
您可以将查询左联接到一个派生表,该表定义了范围内计数的范围,然后按范围分组并对策略进行计数。
SELECT r.l || ' to ' || r.u "RANGE",
count(p) "COUNT"
FROM (SELECT 0 l,
1 u
FROM dual
UNION ALL
SELECT 2 l,
3 u
FROM dual
UNION ALL
SELECT 4 l,
5 u
FROM dual
UNION ALL
SELECT 6 l,
7 u
FROM dual) r
LEFT JOIN (SELECT fv.policy p,
count(distinct fv.fund) cof
FROM policy_fund fv
GROUP BY fv.policy) fpp
ON fpp.cof >= r.l
AND fpp.cof <= r.u
GROUP BY r.l,
r.u
ORDER BY r.l,
r.u;
数据库<>小提琴