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