Re: [SQL ] 同一欄內連續NULL值判斷

看板Database作者 (可愛小孩子)時間7年前 (2017/03/31 18:20), 7年前編輯推噓3(300)
留言3則, 3人參與, 最新討論串2/2 (看更多)
-- 建立測資部份 create table #data (sequence int,value int) insert into #data values(1,100) insert into #data values(2,94) insert into #data values(3,103) insert into #data values(4,NULL) insert into #data values(5,NULL) insert into #data values(6,78) insert into #data values(7,NULL) insert into #data values(8,NULL) insert into #data values(9,NULL) insert into #data values(10,NULL) insert into #data values(11,867) insert into #data values(12,NULL) insert into #data values(13,NULL) insert into #data values(14,NULL) insert into #data values(15,NULL) -- 計算結果部份 select count(*) from ( -- 統計擁有相同 bound 值的 sequence 個數(大於 3 個的才要) -- ps. 關鍵在這: 擁有相同 bound 值表示這些 seqeunce 是連續的 select bound,count(*) as count from ( -- 取得最接近每個 NULL 值的 sequence(往前取且 value 不是 NULL)叫做 bound select t1.sequence,max(t2.sequence) as bound from #data t1 left join #data t2 on t1.sequence > t2.sequence and t2.value is not null where t1.value is null group by t1.sequence ) t1 group by bound having count(*) > 3 ) t1 drop table #data ※ 引述《but07 (BUT07)》之銘言: : 資料庫名稱:MySQL : 內容/問題描述: : 今天有一個資料長的跟下面顯示的一樣 : 我想要看在value這一欄裡面是否有出現連續的NULL值 : 如果有連續的NULL值, 該區段的NULL值數量是不是超過3個 : 如果是就+1 : 例如: : 下面的資料集中, 共有三個連續NULL值區段 : 第一個區段有連續, 但只有兩個NULL值, 故不計 : 第二個區段有連續, 且超過三個NULL值, 故+1 : 第三個區段有連續, 且超過三個NULL值, 故+1 : 最後結果顯示為2 : Sequence Value : 1 100 : 2 94 : 3 103 : 4 NULL : 5 NULL : 6 78 : 7 NULL : 8 NULL : 9 NULL : 10 NULL : 11 867 : 12 NULL : 13 NULL : 14 NULL : 15 NULL : 想了很久不知道怎麼解 : 麻煩各位大大幫忙QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.82.56.246 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1490955631.A.F02.html ※ 編輯: cutekid (111.82.56.246), 03/31/2017 18:27:30

03/31 18:46, , 1F
問題解決了!!!! 感謝大大熱心幫忙!!!!
03/31 18:46, 1F

04/03 12:52, , 2F
04/03 12:52, 2F

04/05 11:25, , 3F
推!
04/05 11:25, 3F
文章代碼(AID): #1OtYrly2 (Database)
文章代碼(AID): #1OtYrly2 (Database)