作者cutekid (可爱小孩子)
看板Database
标题Re: [SQL ] 同一栏内连续NULL值判断
时间Fri Mar 31 18:20:29 2017
-- 建立测资部份
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://webptt.com/cn.aspx?n=bbs/Database/M.1490955631.A.F02.html
※ 编辑: cutekid (111.82.56.246), 03/31/2017 18:27:30
1F:推 but07: 问题解决了!!!! 感谢大大热心帮忙!!!! 03/31 18:46
2F:推 rockchangnew: 赞 04/03 12:52
3F:推 streetbad: 推! 04/05 11:25