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

SQL-Abfrage

Dieses Thema im Forum "Oracle" wurde erstellt von BigBuisyB, 12 Dezember 2016.

  1. BigBuisyB

    BigBuisyB Benutzer

    Hallo zusammen,

    zuerst einmal die Information, dass ich totaler Anfänger in Sachen SQL bin.

    Ich habe eine Frage bezüglicher einer Tabellenabfrage.

    Ich arbeite mit einer Tabelle die nur aus 3 Spalten besteht (Einwohner, PLZ, PLZ_2stellig)

    Ich möchte mir nun Anzeigen lassen, wie viele Einwohner jeweils im 2stelligen PLZ Gebiet leben.

    Bisher habe ich folgende Abfrage gebaut

    select einwohner,plz_2stellig, sum(einwohner) from *tabellenname* where plz_2stellig is not null

    group by einwohner, plz_2stellig;

    Das Problem ist er summiert mir zwar die Einwohnerzahl, allerdings sind die summierten Zahlen in der Ausgabe noch unterteilt, heißt mir werden beispielsweise bei der 2stelligen PLZ 56 über 10 summierte Ergebnisse angezeigt.
    Mit was für einer Abfrage kann ich mir die insgesamten Zahlen für die jeweilige 2stellige PLZ anzeigen lassen?

    Ich hoffe und denke ihr könnt mir da weiterhelfen :)

    VG

    BigBuisyB
     
  2. Chuky666

    Chuky666 Datenbank-Guru

    moin moin,

    ich würde mal nach Group By googlen... ich glaube das könnte hier helfen. Ist aber nur aus der Hüfte geschossen da ich weder code noch Datensätze kenne :)
     
  3. akretschmer

    akretschmer Datenbank-Guru

    Falls Deine Spalte 'PLZ_2stellig' die ersten 2 Stellen von 'PLZ' enthält so ist dies schonmal Murks, weil redundant. Den Hint auf GROUP BY hast ja schon, Dein SQL sieht eigentlich sogar korrekt aus.
     
  4. BigBuisyB

    BigBuisyB Benutzer

    Hi,
    erst mal danke für die schnellen Antworten :) Der Grund warum ich zusätzlich zu PLZ noch eine PLZ_2stllig Spalte erstellt habe ist der, dass ich in Verbindung mit Qlik eine Verteilung der Kunden im Verhältnis zur Bevölkerungsdichte darstellen soll. Damit ich bei Qlik die einzelnen Regionen abbilden kann benötige ich de 2stelligen PLZ.

    Zurück zu meinem Problem. Der Output sieht wie folgt aus (nur ein Ausschnitt):
    Einw. PLZ2 sum(Einw.)
    14784 55 14784
    2977 55 2977
    16539 56 16539
    3173 56 3173
    6681 56 6681
    5036 56 5036
    4381 56 4381
    1908 56 1908
    2713 56 2713
    3012 56 3012
    2403 56 2403
    5845 56 5845
    11747 56 11747
    4946 56 4946
    29027 56 29027

    Ist es jetzt beispielsweise möglich das er mir nur einmal die 2stellige PLZ 56 anzeigt und alle dazu gebildeten Summen noch einmal zu einer Zahl summiert?

    VG

    BigBuisyB
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Wald, Bäume, ...

    Laß einfach die Ausgabe der Einwohner weg (erste Spalte), das ist Bullshit, Du willst nur die Teil-PLZ und die Summe.

    Was machst Du, wenn Du statt der 2stelligen nur die erste Stelle oder aber 3 Stellen haben willst? Richtig, Du ermittelst das von der kompletten PLZ. Und genau so kannst Du das auch mit der 2stelligen PLZ machen. Oder in kurz: lasse die Spalte PLZ_2stellig weg, auch das ist Bullshit. Arbeite beim Select mit substring() von der kompletten PLZ und gut ist.
     
  6. BigBuisyB

    BigBuisyB Benutzer

    Danke :p
    Das mit dem Weglassen der Einwohner hat mir schon geholfen. Die Substring Befehle muss ich mir noch angucken, da ich wie gesagt totaler Neuling in SQL bin.
    Trotzdem nochmal Danke für die Hilfe :)

    VG
     
  7. akretschmer

    akretschmer Datenbank-Guru

    Code:
    test=*# select * from bigbuisyb ;
      plz  | einwohner
    -------+-----------
     12345 |  27120
     12000 |  4711
     12012 |  5432
     98765 |  112233
    (4 Zeilen)
    
    test=*# select substring(plz,1,1), sum(einwohner) from bigbuisyb group by 1;
     substring |  sum   
    -----------+--------
     9  | 112233
     1  |  37263
    (2 Zeilen)
    
    test=*# select substring(plz,1,2), sum(einwohner) from bigbuisyb group by 1;
     substring |  sum   
    -----------+--------
     98  | 112233
     12  |  37263
    (2 Zeilen)
    
    test=*# select substring(plz,1,3), sum(einwohner) from bigbuisyb group by 1;
     substring |  sum   
    -----------+--------
     987  | 112233
     120  |  10143
     123  |  27120
    (3 Zeilen)
    
    test=*# select substring(plz,1,4), sum(einwohner) from bigbuisyb group by 1;
     substring |  sum   
    -----------+--------
     9876  | 112233
     1201  |  5432
     1200  |  4711
     1234  |  27120
    (4 Zeilen)
    
     
  8. BigBuisyB

    BigBuisyB Benutzer

    Danke werde es gleich direkt ausprobieren ! :)
    VG
     
  9. akretschmer

    akretschmer Datenbank-Guru

    Und? Klappt es?
     
  10. BigBuisyB

    BigBuisyB Benutzer

    Hey Akretschmer,

    ja danke dir hat funktionert!

    VG
     
    akretschmer gefällt das.
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