> On Oct 20, 2016, at 12:23 AM, Bart Smissaert <[email protected]> wrote:
>
> Ah, yes, sorry, I needed actually drops and was looking at that.
Just for fun, here is one using recursion:
with
DataSet
as
(
select 1 as id, 2 as key, '2004-06-23' as date, 42 as value union all
select 2 as id, 2 as key, '2006-12-28' as date, 39 as value union all
select 3 as id, 2 as key, '2007-10-09' as date, 42 as value union all
select 4 as id, 2 as key, '2007-10-24' as date, 43 as value union all
select 5 as id, 2 as key, '2009-06-17' as date, 45 as value union all
select 6 as id, 2 as key, '2015-09-09' as date, 36 as value
),
NextSet
(
id,
key,
date,
value,
next_date,
count
)
as
(
select DataSet.*,
(
select Self.date
from DataSet as Self
where Self.key = DataSet.key
and Self.date > DataSet.date
order by Self.date
limit 1
) as next_date,
0 as count
from DataSet
union all
select NextSet.id as id,
NextSet.key as key,
NextSet.date as date,
NextSet.value as value,
(
select Self.date
from DataSet as Self
where Self.key = NextSet.key
and Self.date > NextSet.next_date
order by Self.date
limit 1
) as next_date,
NextSet.count + 1 as count
from NextSet
where exists
(
select 1
from DataSet
where DataSet.key = NextSet.key
and DataSet.date = NextSet.next_date
and DataSet.value > NextSet.value
)
)
select NextSet.key,
min( NextSet.id ) as min_id,
max( NextSet.id ) as max_id
from NextSet
where NextSet.count = 2
group by NextSet.key
order by 1;
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users