Prozentberechnung, SQL

Lukas987

Benutzer
Beiträge
23
Hallo DB-Forum,
ich bin neu in diesen Forum und habe gleich mal ne Frage...
Ich will aus einer Gruppe (z.b. Obstgruppe(es gibt dann mehrere gruppe, z.b. gemüsegruppe usw.) die Früchte(ApfelRot, ApfelGrün usw.) und deren Status(Verfügbar/Nicht verfügbar) berechnen.

Ich will es dann so ausgeben lassen: (100 Äpfel (Rot + Grün waren es und nun haben wir insgesamt nurnoch 75)
Gruppe, Verfügbar (%)
Obstgruppe, 75%

bin bis jetzt hier:


SELECT Gruppe,
FROM TabelleXXX


(hab es gekürzt, da es keine Daten zum veröffentlichen sind...) am ende will ich es als SSRS veröffentlichen...
 
Werbung:
Hallo DB-Forum,
ich bin neu in diesen Forum und habe gleich mal ne Frage...



(hab es gekürzt, da es keine Daten zum veröffentlichen sind...)

Wenn das alles so geheim ist können wir nur raten. Ich rate mal:

Code:
test=*# select * from obst ;
 gruppe |  art  | anzahl
--------+-------+--------
 apfel  | grün  |  10
 apfel  | rot  |  12
 apfel  | gelb  |  5
 pfaume | blau  |  15
 pfaume | madig |  25
(5 rows)

Time: 0,183 ms
test=*# select *, to_char(100 * anzahl::numeric / sum(anzahl) over (partition by gruppe),'99.99') as "Prozent" from obst ;
 gruppe |  art  | anzahl | Prozent
--------+-------+--------+---------
 apfel  | grün  |  10 |  37.04
 apfel  | rot  |  12 |  44.44
 apfel  | gelb  |  5 |  18.52
 pfaume | blau  |  15 |  37.50
 pfaume | madig |  25 |  62.50
(5 rows)

Vermutlich ist es nicht das, was Du suchst, aber mehr gibt bei dem trüben Wetter die Glaskugel halt nicht her.
 
schade, ist es leider nicht, aber die prozent hab ich schonmal aber vom gesamten etz muss ich noch nach den jeweiligen Groups aufteilen ;)

Wenn Du einfach mal ein Beispiel mit nicht-hochgeheimen Daten preigeben könntest, ...

Code:
test=*# select *, to_char(100 * anzahl::numeric / sum(anzahl) over (partition by gruppe),'99.99') as "Prozent", to_char(100 * anzahl::numeric / sum(anzahl) over (),'99.99') as "Prozent über alles" from obst ;
 gruppe |  art  | anzahl | Prozent | Prozent über alles
--------+-------+--------+---------+--------------------
 apfel  | grün  |  10 |  37.04  |  14.93
 apfel  | rot  |  12 |  44.44  |  17.91
 apfel  | gelb  |  5 |  18.52  |  7.46
 pfaume | blau  |  15 |  37.50  |  22.39
 pfaume | madig |  25 |  62.50  |  37.31
(5 rows)
 
Das einzige was unter MSSQL anders zu lösen wäre ist die anzahl::numeric Konvertierung, das geht so bei MS nicht. Da müsste man cast() oder convert() einsetzen.

Das einzige was du bei Prozentrechnung in SQL beachten musst: Beim Rechnen mit Ganzzahl-Datentypen wird natürlich immer gerundet.
 
Werbung:
Zurück
Oben