Zusätzliche Spalte

Franz66

Benutzer
Beiträge
23
Hallo
Als neu brauche ich etwas Hilfe ;-)

Ich habe eine Abfrage erstellt aber ich würde gerne noch eine spalte kreiiren, mit dem "Prozent-Wert" der Resultate.

Hier den Code:

SELECT

ursache_auf,
count (ursache_auf) as anzahl_faelle

FROM
v_rep_14_dev



left join wf_issue on v_rep_14_dev.issue_id = wf_issue.issue_id

left join wf_issue_type on wf_issue.type_id = wf_issue_type.type_id

where wf_issue_type.type_code ='CMT' and

v_rep_14_dev.status_code='CLOSED' and

ursache_auf is not null


group by
ursache_auf

Nun brauche ich die Spalte "Prozent" sowie in Excel berechnet worden ist.anzahl_faelle.jpganzahl_excel.png

Danke für die Hilfe.

Tschuss
Francesco
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.171
Hallo
Als neu brauche ich etwas Hilfe ;-)

Ich habe eine Abfrage erstellt aber ich würde gerne noch eine spalte kreiiren, mit dem "Prozent-Wert" der Resultate.

Du verfrachtest Deine Abfrage in ein Subselect und baust außen drum herum das:

select ursache_auf, anzahl_fälle, 100*c2/(sum(c2) over ())::numeric from (hier deine bisherige abfrage) bla group by ursache_auf, anzahl_fälle.

Demo:

Deine bisherige Abfrage liefert:

Code:
test=*# select * from franz ;
        c1        |  c2
------------------+------
 unfall           |  836
 krank            | 3309
 krank und unfall |   64
(3 rows)

Und nun erweitert:
Code:
test=*# select c1,c2, 100*c2/(sum(c2) over ())::numeric from franz group by c1,c2;
        c1        |  c2  |      ?column?
------------------+------+---------------------
 krank und unfall |   64 |  1.5205511998099311
 krank            | 3309 | 78.6172487526728439
 unfall           |  836 | 19.8622000475172250
(3 rows)


Andreas
 

ukulele

Datenbank-Guru
Beiträge
4.416
Das könnte etwa so aussehen:
Code:
SELECT
 
ursache_auf,
count (ursache_auf) as anzahl_faelle,
100 / (        SELECT
            count (ursache_auf)
            FROM
            v_rep_14_dev
            left join wf_issue on v_rep_14_dev.issue_id = wf_issue.issue_id
            left join wf_issue_type on wf_issue.type_id = wf_issue_type.type_id
            where wf_issue_type.type_code ='CMT' and
            v_rep_14_dev.status_code='CLOSED' and
            ursache_auf is not null ) as anzahl_prozent
 
FROM
v_rep_14_dev
 
left join wf_issue on v_rep_14_dev.issue_id = wf_issue.issue_id
 
left join wf_issue_type on wf_issue.type_id = wf_issue_type.type_id
 
where wf_issue_type.type_code ='CMT' and
 
v_rep_14_dev.status_code='CLOSED' and
 
ursache_auf is not null
 
group by
ursache_auf
Im Prinzip musst du in einer Unterabfrage die Gesamtanzahl ermitteln und damit dann Dreisatz rechnen. Da ich deinem Code nicht ganz entnehmen kann in welcher Tabelle ursache_auf steht habe ich deinen ganzen Select in der Unterabfrage zugrunde gelegt. Eventuell läßt sich das aber auch noch reduzieren.
 

Franz66

Benutzer
Beiträge
23
hallo zusammen
ich brauche wieder hilfe :)
Ist es möglich direkt in der Abfrage die Resultate der Spalte mit "Prozent" Zeichnen zu ergänzen?
query.png

Hier den Code:

SELECT
ursache_auf,
count (ursache_auf) as anzahl_faelle,
(SELECT count (ursache_auf) FROM public.v_rep_14_dev) as AnzTotal,
(round(100*count (ursache_auf)::integer / (SELECT count ( ursache_auf ) FROM public.v_rep_14_dev
left join wf_issue on v_rep_14_dev.issue_id = wf_issue.issue_id
left join wf_issue_type on wf_issue.type_id = wf_issue_type.type_id
where wf_issue_type.type_code ='CMT' and
v_rep_14_dev.status_code='CLOSED')::numeric,1)) as Proz
FROM
public.v_rep_14_dev
left join wf_issue on v_rep_14_dev.issue_id = wf_issue.issue_id
left join wf_issue_type on wf_issue.type_id = wf_issue_type.type_id
where wf_issue_type.type_code ='CMT' and
v_rep_14_dev.status_code='CLOSED' and
ursache_auf is not null
group by
ursache_auf
order by anzahl_faelle DESC


Danke viel Mals
 

Franz66

Benutzer
Beiträge
23
danke für die Info, es ist für mich etwas schwierig zu verstehen wo soll ich diese ergänzung hinzufügen
habe versucht an dieverse stellen zu platzieren aber es funktioniert nicht
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.171
danke für die Info, es ist für mich etwas schwierig zu verstehen wo soll ich diese ergänzung hinzufügen
habe versucht an dieverse stellen zu platzieren aber es funktioniert nicht

Code:
db183175=# select * from franz ;
 a  | b
----+----
 10 | 30
(1 row)

db183175=# select a/b::numeric as "als float", to_char(100*a/b::numeric,'99.99') || '%' as "als text mit %" from franz ;
       als float        | als text mit %
------------------------+----------------
 0.33333333333333333333 |  33.33%
(1 row)
 
Oben