趣味題2 判斷記錄連續性的問題

2021-08-25 06:58:03 字數 579 閱讀 4983

1、大致的需求是使用sql來判斷記錄的連續性,並找到每段記錄的最小值和最大值。

核心思想是通過和rownum的比較,給不同的時間段分配不同的值,然後根據這個值進行group。需要額外注意的是,首先要保證記錄是按照順序讀取的,否則的話,會導致記錄錯誤的分段。其次需要注意的是時間的處理,這裡是將年和月的資訊存在乙個字串中,但是判斷記錄是否連續需要根據時間的規則處理。而且,每個月包含的天數是不一致的,因此,需要使用處理月份的函式。

select min(time) ||『~』|| max(time) from (

select time,months_between(to_date(time,'yyyy-mm'),add_months(trunc(sysdate,'mm'),rownum)) intervalfrom (select time from test order by time)) group by interval;

其實就是以現在的時間作為參照物,如果是連續的日期的話,sysdate + mm - time 的時間差是不變的,然而如果time跳躍了,那麼他們的時間差會越來越小,我現在就用這個時間差作為分組物件,進行分組,取出最大的和最小的時間,就是他的區間了;

趣味題系列(2) 警察抓逃犯問題

題目 a國由1000000個島組成,島與島之間只能用船作為交通工具,有些島之間有船來往,從任意乙個島都可以去到另外任乙個島,當然其中可能要換船。現在有乙個警 察要追捕乙個逃犯,開始時他們在不同的島上,警察和逃犯都是每天最多乘一次船,但這個逃犯還有點迷信,每個月的13日不乘船,警察則不迷信。警察每天乘...

spfa負環判斷型別題(2類)

正常spfa中加入time陣列,迴圈判斷乙個點是否入隊並更新了n次以上注意是 n 其餘的沒有什麼問題 擴充套件的還有,尋找所有負環上的點,這個可以在spfa中time 發現負環的時候,對那個點進行dfs操作,找到所有的負環上的點即可 void dfs int u spfa負環的判斷 include ...

刷題長路(2) 簡單錯誤記錄

開發乙個簡單錯誤記錄功能小模組,能夠記錄出錯的 所在的檔名稱和行號。1.記錄最多8條錯誤記錄,對相同的錯誤記錄 即檔名稱和行號完全匹配 只記錄一條,錯誤計數增加 檔案所在的目錄不同,檔名和行號相同也要合併 2.超過16個字元的檔名稱,只記錄檔案的最後有效16個字元 如果檔名不同,而只是檔名的後16個...