Re: [SQL ] 同一欄內連續NULL值判斷
-- 建立測資部份
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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章