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

Newbie: Zusammenfassen mehrerer Einzelabfragen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Armus, 2 Februar 2017.

  1. Armus

    Armus Neuer Benutzer

    Hallo,

    ich habe gerade angefangen mich mit SQL zu beschäftigen und stehe vor folgendem Problem.

    Version|Anzahl
    --------------
    1.0 | 2
    2.0 | 1
    2.1 | 2
    3.0 | 4
    3.1 | 3


    Eine Abfrage soll ergeben:

    Hauptversion|Summe
    ------------------
    1 | 2
    2 | 3
    3 | 7


    Ich habe leider keinen Ansatz wie ich die Abfrage formulieren soll.

    Für eine einzelne Version könnte ich nehmen.
    Code:
    SELECT SUM(Anzahl) as Version_1
    FROM table
    WHERE SUBSTRING(version, 1, 1) = '1'
    GROUP by SUBSTRING(version, 1, 1)
    Kann mir jemand weiterhelfen?

    Armus
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Was hast denn für Datentypen?

    Code:
    test=*# select * from armus ;
     version | anzahl
    ---------+--------
     1.0  |  2
     2.0  |  1
     2.1  |  2
     3.0  |  4
     3.1  |  3
    (5 rows)
    
    test=*# select regexp_replace(version, '\..$',''), sum(anzahl) from armus group by 1 order by 1;
     regexp_replace | sum
    ----------------+-----
     1  |  2
     2  |  3
     3  |  7
    (3 rows)
    
    test=*# \d armus
      Table "public.armus"
     Column  |  Type  | Modifiers
    ---------+---------+-----------
     version | text  |
     anzahl  | integer |
    
    test=*#
    
     
  3. Armus

    Armus Neuer Benutzer

    Vielen Dank für die Hilfe.
    Ich kannte zwar group und order aber das by 1 war mir nicht bekannt.
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Tja, das ist Faulheit, man kann sich so auf die n-te Spalte im Resultset beziehen. In produktivem Code sollte man das nicht verwenden.
     
  5. ukulele

    ukulele Datenbank-Guru

    Grundsätzlich geht es auch mit substring()
    Code:
    SELECT SUBSTRING(version, 1, 1) AS Version,SUM(Anzahl) AS Summe
    FROM table
    GROUP by SUBSTRING(version, 1, 1)
    aber dann hast du ein Problem sobald deine Versionsnummer mehrstellig wird.
     
Die Seite wird geladen...

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