[Oracle10g] Kumulieren aus Mehrfachnennung

styri

Grünschnabel
Hallo zusammen.

Bin dabei, div. Größen von Tabellen und deren Indizes auszuwerten.
Hierbei entsteht eine Tabelle, deren letzte Spalten so aussehen:
PHP:
TABLE_NAME             IDX_BYTES_ALLOCATED               TBL_IDX_SUM            PCT
xxxx                   619446272	                     9549905920             18,53
xxxx                   520880128	                     9549905920             18,53
xxxx                   433586176	                     9549905920             18,53
xxxx                   520617984	                     9549905920             18,53
xxxx                   664797184	                     9549905920             18,53
xxxx                   1238630400                        9549905920             18,53
xxxx                   435421184                         9549905920             18,53
xxxx                   970981376                         9549905920             18,53
yyyy                   220200960                         1636892672             3,18
yyyy                   168034304                         1636892672             3,18
yyyy                   129236992	                     1636892672             3,18
yyyy                   178782208	                     1636892672             3,18
TABLE_NAME: Tabellen Name
IDX_BYTES_ALLOCATED: Bytes die der Index belegt
TBL_IDX_SUM: Bytes, die die Tabelle mit allen zu ihr gehörenden Indizes belegt (per SUM() OVER(PARTITION BY))
PCT: TBL_IDX_SUM/SUM(DISTINCT TBL_IDX_SUM) OVER())*100, also wieviel Prozent TBL_IDX_SUM von allen (einmal) belegt.

Dem geneigten Leser fällt inzwischen evtl. auf, jede Tabelle wird so oft wiederholt, wie ein ihr zugehöriger Index aufgelistet ist. Mir ist klar, dass das keine schöne Normalform ist, macht so aber durchaus sinn.

Gut, ich möchte die Prozentwerte hinten gerne Kumulieren, aber eben je Tabelle, nicht je Index.
Also ich hätte gerne noch so eine Spalte:
PHP:
PCT_KUM
18,53
18,53
18,53
18,53
18,53
18,53
18,53
18,53
21,71
21,71
21,71
21,71

Also von der Theorie so was wie:
SUM(DISTINCT PCT) OVER(ORDER BY TBL_IDX_SUM DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) PCT_KUM
Nun ist DISTINCT so leider nicht erlaubt. Bzw. mit DISTINCT kein ORDER BY -> keine Windowing Klausel. :mad:

Jemand eine Idee, wie ich das lösen könnte?
Die oben dargestellte "Tabelle" kommt durch viele subselects zusammen und soll eigentlich so weggespeichert werden. Also ein subselect auf diese "Tabelle" halte ich für keine schöne Lösung.

Danke im Voraus
 
Zuletzt bearbeitet:
So, nach ner kleinen Pause und etwas Ablenkung ist das Hirn schon viel flexibler.

Thema ist erledigt.

PS: Der ganze Aufwand wird betrieben, damit man sagen kann:
Mich interessieren nur Tabellen und Indizes, die 90% des Platzes belegen.
 

Neue Beiträge

Zurück