Oracle 如何对GROUPBY查询返回的计数执行范围存储桶
我希望你能帮助我 我所处的情况是,我首先需要计算不同的基金和分组策略。一旦我做到了这一点,我需要将保单的数量放在基金数量的范围内 这是可用的数据,您可以在其中看到与之相关的政策和不同的基金Oracle 如何对GROUPBY查询返回的计数执行范围存储桶,oracle,plsql,Oracle,Plsql,我希望你能帮助我 我所处的情况是,我首先需要计算不同的基金和分组策略。一旦我做到了这一点,我需要将保单的数量放在基金数量的范围内 这是可用的数据,您可以在其中看到与之相关的政策和不同的基金 **PolicyNum Fund** 1201 AB 1202 AC 1203 AB 1203 AC 1203 AD 1204 AB 1204 BC 1204 AC 1204 AD
**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;
选择fv,policy,应该是选择fv.policy,?感谢您努力使问题具有视觉吸引力。但是这些HTML表是不需要的。事实上,如果想要从ASCII或Unicode中创建实际数据集,ASCII或Unicode就足够了,而且更容易使用。所以我回滚了你上次的编辑。