内容简介:Let’s say we have a database table with date ranges, each range designated by a RANGE_START and a RANGE_END column:We are now interested in finding the gaps between these date ranges. If we look at this example data set we can see that there are two gaps:W
Let’s say we have a database table with date ranges, each range designated by a RANGE_START and a RANGE_END column:
CREATE TABLE date_ranges ( range_start DATE, range_end DATE );
RANGE_START RANGE_END ----------- --------- 05/02/2020 01/04/2020 02/04/2020 15/04/2020 16/04/2020 01/05/2020 01/06/2020 20/06/2020 21/06/2020 01/07/2020 02/07/2020 31/07/2020 05/08/2020 30/08/2020
We are now interested in finding the gaps between these date ranges. If we look at this example data set we can see that there are two gaps:
RANGE_START RANGE_END 05/02/2020 01/04/2020 02/04/2020 15/04/2020 16/04/2020 01/05/2020 -- gap -- 01/06/2020 20/06/2020 21/06/2020 01/07/2020 02/07/2020 31/07/2020 -- gap -- 05/08/2020 30/08/2020
What would be the SQL query to find these automatically? With standard SQL this would be a difficult task. However, there are some special functions in Oracle SQL called analytic functions that greatly help with this task. Analytic functions compute an aggregate value based on a group of rows. They differ from aggregate functions in that they return multiple rows for each group. In this case we will use the analytic functions MAX and LEAD:
SELECT * FROM (
SELECT
MAX(range_end)
OVER(ORDER BY range_start) + 1 gap_start,
LEAD(range_start)
OVER(ORDER BY range_start) - 1 gap_end
FROM date_ranges
) WHERE gap_start <= gap_end;
The result of this query are the date range gaps we are interested in:
GAP_START GAP_END --------- ------- 02/05/2020 31/05/2020 01/08/2020 04/08/2020
Note that the MAX function in the query is the analytic MAX function, not the aggregate MAX function, indicated by the OVER keyword with an analytic clause. It operates on a sliding window. The LEAD analytic function allows you to access the following row from the current row without using a self-join.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
人工智能
腾讯研究院、中国信通院互联网法律研究中心、腾讯AI Lab、腾讯开放平台 / 中国人民大学出版社 / 2017-10-25 / 68.00元
面对科技的迅猛发展,中国政府制定了《新一代人工智能发展规划》,将人工智能上升到国家战略层面,并提出:不仅人工智能产业要成为新的经济增长点,而且要在2030年达到世界领先水平,让中国成为世界主要人工智能创新中心,为跻身创新型国家前列和经济强国奠定基础。 《人工智能》一书由腾讯一流团队与工信部高端智库倾力创作。本书从人工智能这一颠覆性技术的前世今生说起,对人工智能产业全貌、最新进展、发展趋势进行......一起来看看 《人工智能》 这本书的介绍吧!