zOs/SQL/EXOLAP
with d(a, rest, lev) as
( select ' ', 'abccdefffgh', 0 from sysibm.sysDummy1
union all select substr(rest, lev+1, 1), rest, lev+1
from d where lev < 999 and lev < length(rest)
)
select a
, row_number() over(order by a) "rowNum"
, rank () over(order by a) "rank"
, dense_rank() over(order by a) "denseRank"
from d
;x;
-- row_number
select row_number() over ()
, card, strip(creator) || '.' || name
from sysibm.sysTables
where dbName like 'U%'
order by dbName, name
with ur
;
with t as -- row_number in Select
( -- braucht with
select row_number() over () row
, strip(creator) || '.' || strip(name) tb
from sysibm.sysTables
where dbName like 'U%'
order by creator, name
)
select *
from t
where mod(row, 20) = 0
with ur
;
with t as -- vergleich in %
( -- mit nächst kleinerem
select row_number() over (partition by dbName order by card desc) row
, card, dbName db, name tb
from sysibm.sysTables
where dbName like 'U%'
)
select case when k.db is null or k.card < 1 then null
else smallint(real(g.card)*100/k.card) end
, g.*
from t g
left join t k
on g.db = k.db and g.row+1 = k.row
order by g.db, g.row
with ur