Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Prozentberechnung, SQL

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Lukas987, 8 September 2014.

  1. Lukas987

    Lukas987 Benutzer

    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...
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  3. Lukas987

    Lukas987 Benutzer

    schade, ist es leider nicht, aber die prozent hab ich schonmal aber vom gesamten etz muss ich noch nach den jeweiligen Groups aufteilen ;)
     
  4. akretschmer

    akretschmer Datenbank-Guru

    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)
    
    
     
  5. Lukas987

    Lukas987 Benutzer

    Ich darf die nicht veröffentlichen
     
  6. Lukas987

    Lukas987 Benutzer

    aber trotzdem danke :)
     
  7. ukulele

    ukulele Datenbank-Guru

    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.
     
  8. Lukas987

    Lukas987 Benutzer

    schon lang fertig :D sorry... trotzdem danke :)
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden