===== Oracle Analytic Function - Beispiel 4 - Prozentsatz anzeigen =====
Mit der Funktion [[http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions142.htm#SQLRF00691|ratio_to_report()]] kann der Prozentuale Anteil der aktuellen Zeile an der Gesamtsumme ausgegeben werden.
-- testdaten
--
create table t as select * from all_objects
/
-- Abfragen
--
select cnt
, object_type
, round((ratio_to_report( sum( cnt )) over())*100,3) as prozent
from (
select count(*) cnt
, object_type
from t
group by object_type
)
group by cnt
, object_type
order by cnt desc
/
CNT OBJECT_TYPE PROZENT
------------ ------------------- ------------
28803 SYNONYM 50,383
23048 JAVA CLASS 40,316
1934 VIEW 3,383
1545 TYPE 2,703
835 JAVA RESOURCE 1,461
401 PACKAGE ,701
241 FUNCTION ,422
144 TABLE ,252
Der Prozentsatz kann auch über eine "Gruppe" von Daten angezeigt werden mit der Option => **" ... OVER( PARTITION BY )**.
Mehr Beispiele: [[prog:oracle_analytic_functions|Oracle Analytic Functions im praktischen Einsatz]]