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

bestimmte SQL Werte in einer einzelnen Zeile zählen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von alexfrenzel92, 26 Oktober 2016.

  1. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    Liebes Forum,

    Ich hoffe, das Thema gibt es noch nicht, etc.

    Wie kann ich die Anzahl eines bestimmten Werts in einer Zeile zählen (festgelegt durch eine Abfrage)

    d.h.:
    zähle alle Zellen der Abfrage 'SELECT * FROM bla WHERE Spalte1 = 8 LIMIT 1' die den Wert 3 enthalten
    Tabelle bla besteht aus den Spalten (Spalte1-12). Das Ergebnis geht von 0-11. Kleinlicherweise, weil Spalte 1 Index ist und nicht gezählt werden soll.

    Ich kenne bisher nur COUNT(1) wirklich gut aber das zählt nur die Spaltenanzahl

    Vielen Dank!
     
  2. akretschmer

    akretschmer Datenbank-Guru

    What?
     
  3. akretschmer

    akretschmer Datenbank-Guru

    ahh, suchst Du vielleicht sowas hier:

    Code:
    test=*# \d alexfrenzel
     Tabelle »public.alexfrenzel«
     Spalte |  Typ  | Attribute
    --------+---------+-----------
     s1  | integer |
     s2  | integer |
     s3  | integer |
     s4  | integer |
    
    test=*# select sum((case when s1=3 then 1 else 0 end) + (case when s2=3 then 1 else 0 end) + (case when s4=3 then 1 else 0 end) + (case when s4=3 then 1 else 0 end)) from alexfrenzel ;
     sum
    -----
       
    (1 Zeile)
    
    Falls ja: dein Tabellendesign erscheint mir defekt.
     
  4. ukulele

    ukulele Datenbank-Guru

    Ich sehe hier auch noch nicht ganz die Logik, vor allem bei einer Abfrage mit LIMIT 1.
     
  5. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    Code:
    Tabelle bla:
    Spalte1 | Spalte2 | Spalte3 | Spalte4 | Spalte5 | Spalte6 | Spalte7 | Spalte8 | Spalte9 | Spalte10 | Spalte11 | Spalte12
    1  |1  |1  |4  |1  |14 |6  |1  |5  |1  |15 | 3
    2  |1  |1  |4  |12 |1  |6  |1  |5  |1  |15| 2
    3  |1  |1  |3  |1  |1  |6  |4  |5  |4  |15| 5
    ...
    8 |1  |4  |1  |1  |1  |6  |4  |5  |1  |15| 6 
    Das ergibt die Abfrage (SELECT * FROM bla)

    Die Abfrage (SELECT * FROM bla WHER SPalte1 = 8) ergibt die rot markierte Zeile
    Dort soll gezählt werden, die oft der Wert 4 vorkommt. Falls der Wert in 'Spalte 1' auch 4 ist, soll er nicht gezählt werden. In dem Beispiel würde das Ergebnis 2 sein

    EDIT: Rot markieren geht in den CODE-Tags nicht, also die letzte Zeile (nach ...)
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Da ist zwar nix rot, aber ich denke, meine zweite Antwort ist das, was Du suchst. Das anzupassen an Deine konkreten Bedingungen überlasse ich Dir zur Übung. Und ja: ich denke, das Design ist kapott.
     
  7. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    Wegen den Spaltennamen?
     
  8. akretschmer

    akretschmer Datenbank-Guru

    Zum einen deswegen, zum anderen scheinen ja die Spalten untereinander abhängig zu sein. Aber vielleicht verstehe ich nur Dein Gesamtkonzept nicht.
     
  9. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    ja kann sein
    Das hier funktioniert
    Danke!
     
    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