zOs/SQL/SPCDIFF

-- Diff: Differenz des benutzten DB2-TS Spaces zwischen zwei Daten
--         neues Datum im where von n eingeben
--         altes Datum im where von o eingeben
--         weitere Selektion (db, ts) im where von n UND o eingeben
--
--         für Gruppierung auf TS Ebene alle
--              auskommentierten TS-Ausdrücke aktivieren
--
--         Sortierung: absteigen nach diff oder ration
--
--
--         Output:
--             ratio = Verhältnis Grösse neu zu alte in %  (100=gleich)
--             diff  = Differenz  Grösse neu - alt  in Bytes
--             nDSNs = Anzahl Datasets neu
--             nSpc  = benutzer Space neu in Bytes
--             oDSNs = Anzahl Datasets alt
--             oSpc  = benutzer Space alt in Bytes
--
-- benutzt:  table oa1?.tadm09A1: tabelle mit historischen Space Daten
--           udf oa1?.fosFmtE8/E7: Formatierung siehe fosFmtE8
--
--  6. 1.09 W. Keller neu
--
with n as   -- n = new
(
select db_name nDb,
        -- ts_name nTs,
        count(*) nCn, sum(hi_u_rba) nSp
    from oa1a.tadm09A1
    where
       -- datum = current date
       datum = '05.01.2010'
       -- and db_name like 'M%'
       -- and ts_name like 'A%'
    group by db_name
       --  , ts_name
)
, o as      -- o = old
(
select db_name oDb,
        -- ts_name oTs,
        count(*) oCn, sum(hi_u_rba) oSp
    from oa1a.tadm09A1
    where
       -- datum = current date - 7 days
       datum = '01.01.2010'
       -- and db_name like 'M%'
       -- and ts_name like 'A%'
    group by db_name
       --  , ts_name
)
, diff as
(
select coalesce(oDb, nDb) db,
    -- coalesce(oTs, nTs) ts,
       smallint(case when oSp is null or oSp < 1 then 9999
            else min(9999, coalesce(nSp, 0) * 100 / oSp) end) ratio,
       coalesce(nSp, 0) - coalesce(oSp, 0) diff,
       oCn, oSp, nCn, nSp
    from o
    full join n
        on oDb = nDb
        -- and oTs = nTs
)
select db,
       -- ts,
       ratio "ratio %",
       oa1a.fosFmtE8(diff) "  diff B",
       nCn              "nDSNs",
       oa1a.fosFmtE7(nSp)  " nSpc B",
       oCn              "oDSNs",
       oa1a.fosFmtE7(oSp)  " oSpc B"
    from diff
    order by diff desc
    with ur
;