如何对Group by查询返回的Count进行Range Bucket处理



我希望你能帮我。

我所处的情况是,我首先需要对基金和按政策分组进行计数。一旦我做到了,我需要把政策的数量放在基金数量的范围内。

这是可用的数据,在那里你可以看到与相关的政策和不同的资金

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

数据库<>小提琴

相关内容

  • 没有找到相关文章