Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
47
Task/Run-length-encoding/SQL/run-length-encoding-1.sql
Normal file
47
Task/Run-length-encoding/SQL/run-length-encoding-1.sql
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
-- variable table
|
||||
drop table if exists var;
|
||||
create temp table var ( value varchar(1000) );
|
||||
insert into var(value) select 'WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW';
|
||||
|
||||
-- select
|
||||
with recursive
|
||||
ints(num) as
|
||||
(
|
||||
select 1
|
||||
union all
|
||||
select num+1
|
||||
from ints
|
||||
where num+1 <= length((select value from var))
|
||||
)
|
||||
,
|
||||
chars(num,chr,nextChr,isGroupEnd) as
|
||||
(
|
||||
select tmp.*, case when tmp.nextChr <> tmp.chr then 1 else 0 end groupEnds
|
||||
from (
|
||||
select num,
|
||||
substring((select value from var), num, 1) chr,
|
||||
(select substring((select value from var), num+1, 1)) nextChr
|
||||
from ints
|
||||
) tmp
|
||||
)
|
||||
select (select value from var) plain_text, (
|
||||
select string_agg(concat(cast(maxNoWithinGroup as varchar(10)) , chr), '' order by num)
|
||||
from (
|
||||
select *, max(noWithinGroup) over (partition by chr, groupNo) maxNoWithinGroup
|
||||
from (
|
||||
select num,
|
||||
chr,
|
||||
groupNo,
|
||||
row_number() over( partition by chr, groupNo order by num) noWithinGroup
|
||||
from (
|
||||
select *, (select count(*)
|
||||
from chars chars2
|
||||
where chars2.isGroupEnd = 1 and
|
||||
chars2.chr = chars.chr and
|
||||
chars2.num < chars.num) groupNo
|
||||
from chars
|
||||
) tmp
|
||||
) sub
|
||||
) final
|
||||
where noWithinGroup = 1
|
||||
) Rle_Compressed
|
||||
62
Task/Run-length-encoding/SQL/run-length-encoding-2.sql
Normal file
62
Task/Run-length-encoding/SQL/run-length-encoding-2.sql
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
-- variable table
|
||||
DROP TABLE IF EXISTS var;
|
||||
CREATE temp TABLE var ( VALUE VARCHAR(1000) );
|
||||
INSERT INTO var(VALUE) SELECT '1A2B3C4D5E6F';
|
||||
|
||||
-- select
|
||||
WITH recursive
|
||||
ints(num) AS
|
||||
(
|
||||
SELECT 1
|
||||
UNION ALL
|
||||
SELECT num+1
|
||||
FROM ints
|
||||
WHERE num+1 <= LENGTH((SELECT VALUE FROM var))
|
||||
)
|
||||
,
|
||||
chars(num,chr,nextChr) AS
|
||||
(
|
||||
SELECT tmp.*
|
||||
FROM (
|
||||
SELECT num,
|
||||
SUBSTRING((SELECT VALUE FROM var), num, 1) chr,
|
||||
(SELECT SUBSTRING((SELECT VALUE FROM var), num+1, 1)) nextChr
|
||||
FROM ints
|
||||
) tmp
|
||||
)
|
||||
,
|
||||
charsWithGroup(num,chr,nextChr,group_no) AS
|
||||
(
|
||||
SELECT *,(SELECT COUNT(*)
|
||||
FROM chars chars2
|
||||
WHERE chars2.chr !~ '[0-9]' AND
|
||||
chars2.num < chars.num) group_No
|
||||
FROM chars
|
||||
)
|
||||
,
|
||||
charsWithGroupAndLetter(num,chr,nextChr,group_no,group_letter) AS
|
||||
(
|
||||
SELECT *,(SELECT chr
|
||||
FROM charsWithGroup g2
|
||||
where g2.group_no = charsWithGroup.group_no
|
||||
ORDER BY num DESC
|
||||
LIMIT 1)
|
||||
FROM charsWithGroup
|
||||
)
|
||||
,
|
||||
lettersWithCount(group_no,amount,group_letter) AS
|
||||
(
|
||||
SELECT group_no, string_agg(chr, '' ORDER BY num), group_letter
|
||||
FROM charsWithGroupAndLetter
|
||||
WHERE chr ~ '[0-9]'
|
||||
GROUP BY group_no, group_letter
|
||||
)
|
||||
,
|
||||
lettersReplicated(group_no,amount,group_letter, replicated_Letter) AS
|
||||
(
|
||||
SELECT *, rpad(group_letter, cast(amount as int), group_letter)
|
||||
FROM lettersWithCount
|
||||
)
|
||||
select (SELECT value FROM var) rle_encoded,
|
||||
string_agg(replicated_Letter, '' ORDER BY group_no) decoded_string
|
||||
FROM lettersReplicated
|
||||
Loading…
Add table
Add a link
Reference in a new issue