Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
--ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ create table tmp_table1 (id int); insert into tmp_table1 values(1),(2),(3),(6),(8),(9),(10),(11),(12),(14),(15),(16); select min(id) as _start, max(id) as _end from (select id, id-row_number()over(order by id) as gr from tmp_table1) as M group by gr order by 1; ---Но Π±ΠΎΠ»Π΅Π΅ интСрСсСн Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ тСкстовыми полями (ΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π΄ Π½ΠΈΠΌΠΈ ΠΌΠ°Ρ‚. ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ): create table tmp_table2 (id serial primary key, txt varchar(3)); insert into tmp_table2(txt) values('aa'),('ab'),('ac'),(''),(null),('ad'),('ac'),(''),('aa'),('as'),('ab'),(''); --Π² рСкурсии, ΠΏΠΎ сути, дСлаСтся Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ присваиваСт Π³Ρ€ΡƒΠΏΠΏΡ‹ для ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² with RECURSIVE tt as ( select id, txt, 1 as gr from tmp_table2 t1 where id=1 union all select t1.id, t1.txt, case when ifnull(t1.txt,'')<>'' then tt.gr else tt.gr+1 end as gr from tmp_table2 t1 inner join tt on tt.id+1=t1.id ) select distinct gr, first_value(txt)over(partition by gr order by gr) _start, last_value(txt)over(partition by gr order by gr) _end from tt where isnull(txt,'')<>'' order by 1; --Ссли ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ id2 ΠΈΠ· Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ, Ρ‚ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ слСтаСт сортировка, Π½ΠΎ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² сохранятся.

Stuck with a problem? Got Error? Ask AI support!

Copy Clear