繁体   English   中英

计算两个范围的vertica sql的重叠百分比

[英]Calculate percentage overlap for two ranges vertica sql

假设我有两个范围:下面的a和b。

我的目标不仅是计算a和b之间是否有任何重叠,而且还要计算百分比重叠。

例如,假设37-42是36-42的子集,则记录1将为0%,记录2将为100%,假设记录3缺少41和42,但记录3将为4/6,但包含37,38,39,和40。

在vertica中有简单的方法吗?

您可以使用greatest()least()

select least(least(hours_to_b, hours_to_a) - greatest(hours_from_b, hours_from_a)), 0) /
       (greatest(hours_to_b, hours_to_a) - least(hours_from_b, hours_from_a)) as overlap_ratio

编辑:

哦,您要在“ b”中与“ a”重叠,而不是两者的整体重叠。 这是相似的:

select (least(least(hours_to_b, hours_to_a) - greatest(hours_from_b, hours_from_a)), 0) /
        (hours_to_b - hours_from_b)
       ) as overlap_ratio

暂无
暂无

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

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