count(1)
è pari a sum(1)
nel tuo caso.
provare qualcosa di simile:
18:39:36 [email protected]> ed
Wrote file S:\\tools\buffer.sql
1 select owner,
2 count(*) group_cnt,
3 sum(count(*)) over() total_cnt,
4 round(100*(count(*)/sum(count(*)) over()),2) perc
5 from dba_objects
6 group by owner
7* order by 4 desc
18:39:57 [email protected]>/
OWNER GROUP_CNT TOTAL_CNT PERC
------------------------------ ---------- ---------- ----------
SYS 31609 59064 53.52
PUBLIC 24144 59064 40.88
XDB 1660 59064 2.81
SYSTEM 597 59064 1.01
WMSYS 332 59064 .56
EXFSYS 312 59064 .53
IRKAZDATA 158 59064 .27
STRMADMIN 92 59064 .16
DBSNMP 55 59064 .09
RI 25 59064 .04
PASS 16 59064 .03
POTS 19 59064 .03
TI 11 59064 .02
STRMODS 11 59064 .02
OUTLN 10 59064 .02
APPQOSSYS 5 59064 .01
ORACLE_OCM 8 59064 .01
17 rows selected.
Elapsed: 00:00:00.16
aggiornamento: o anche più semplice con ratio_to_report
18:53:36 [email protected]> ed
Wrote file S:\\tools\buffer.sql
1 select owner,
2 round(100*ratio_to_report(count(*)) over(), 2) perc
3 from dba_objects
4 group by owner
5* order by 2 desc
18:54:03 [email protected]>/
OWNER PERC
------------------------------ ----------
SYS 53.52
PUBLIC 40.88
XDB 2.81
SYSTEM 1.01
WMSYS .56
EXFSYS .53
IRKAZDATA .27
STRMADMIN .16
DBSNMP .09
RI .04
PASS .03
POTS .03
TI .02
STRMODS .02
OUTLN .02
APPQOSSYS .01
ORACLE_OCM .01
17 rows selected.
Elapsed: 00:00:00.20
fonte
2012-12-05 10:39:22
Cosa ti aspetti? – nhahtdh
specifica il nome della colonna in count() e sum() .. –
@ Gik25: prova con 'select stato, count (1), sum (1)' nella tua query, poi saprai perché stai ricevendo il 100 per ogni riga. E puoi dirci cosa ti aspetti dal conteggio (1) e dalla somma (1) –