繁体   English   中英

如何查询Oracle中列值的分布(按值范围分组)?

[英]How to query the distribution (grouped by value range) of a column value in Oracle?

假设在Oracle中有一个名为DISTANCES的表,该表的浮动类型列名为distance。 距离范围是[0,1000]。 我想知道距离的分布,例如,以下各个范围中有多少行:(0,10],(10,50],(50,100],(100,500],.. 。(5000,10000]。

如何建立这个SQL查询?

使用派生表将每个距离归入其组。 然后GROUP BYcount

select dist_group, count(*)
from
(
 select case when distance between 0  and 10 then '(0, 10)'
             when distance between 10 and 50 then '(10, 50)'
             ...
             when distance between 5000 and 10000 then '(5000, 10000)' end as dist_group
 from distances
)
group by dist_group
SELECT COUNT( CASE WHEN   0 <= distance AND distance <=   10 THEN distance END ) AS in_range_0_10,
       COUNT( CASE WHEN  10 <  distance AND distance <=   50 THEN distance END ) AS in_range_10_50,
       COUNT( CASE WHEN  50 <  distance AND distance <=  100 THEN distance END ) AS in_range_50_100,
       COUNT( CASE WHEN 100 <  distance AND distance <=  500 THEN distance END ) AS in_range_100_500,
       COUNT( CASE WHEN 500 <  distance AND distance <= 1000 THEN distance END ) AS in_range_500_1000
FROM   Distance;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM