30分以内で必ず振られるという条件があるならこうします。
元の回答は連続性があるデータにしか対応できませんが、これならwhere句で
範囲を制限することもできます
select
c1,c2,
coalesce(c2,(select c2 from tbl where c1=(select max(c1) from tbl where c1 between t1.c1 - interval 30 minute and t1.c1 and c2 is not null))) as c2r
from tbl as t1
where c1>'08:00:05'