To je složité. Nejprve musíte najít po sobě jdoucí záznamy data, takže pomocí
thedate theid thetype 2014-07-12 5001 59 2014-07-12 5002 101 2014-07-12 5003 88 2014-07-13 5004 10 2014-07-12 5005 60
byste identifikovali 2014-07-12 jako jeden výskyt pro první tři záznamy a další pro poslední záznam. Druhý záznam by musel získat pozici #3 ve vašich výsledcích, ne #5.
Toho dosáhnete tím, že po sobě jdoucím záznamům dáte skupinový klíč pomocí prvního LAG
podívat se do předchozího záznamu, čímž vytvoříte příznak změny skupiny a poté tyto příznaky shromáždíte.
select thedate, theid, thetype
from
(
select
thedate, theid, thetype,
sum(new_group) over (order by theid) as group_key
from
(
select
thedate, theid, thetype,
case when lag(thedate) over (order by theid) = thedate then 0 else 1 as new_group
from mytable
) marked
) grouped
order by
group_key,
case when thetype = 101 then 1 else 0 end,
theid;