Ankündigung

Einklappen
Keine Ankündigung bisher.

bedingtes Zählen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • drsoong
    hat ein Thema erstellt bedingtes Zählen.

    bedingtes Zählen

    Hi

    Ein Wirtschaftsverband füllt folgende Umsatztabelle:

    Firma|Jahr|Quartal|Produktgruppe|Land|Betrag

    Ich möchte abfragen

    1. wieviel unterschiedliche Firmen in jedem Quartal
    2. wieviel unterschiedliche Firmen in Q1,Q1 = HY1
    3. wieviel unterschiedliche Firmen in Q3,Q4 = HY2
    4. wieviel unterschiedliche Firmen in Q1 - Q4 = FY

    Einträge pro Produktgruppe, Land für bestimmte Jahre gemacht haben.

    Ein erster Ansatz ist, um mal zu gucken, wie ich überhaupt distinct für
    bestimmte Quartale zähle, ist:
    Code:
    SELECT  Jahr, Land, Produktgruppe, if(q<3,COUNT(distinct company),0) AS HY1, if(q>2,COUNT(distinct company),0) AS HY2 FROM tabelle
    WHERE Jahr IN (2008,2009) GROUP BY Jahr, Land, Produktgruppe
    Da kommt dann so ein Ergebnis:

    2008|IndexLand=2|IndexProduktgruppe=3|HY1=5|HY2=0
    2008|IndexLand=3|IndexProduktgruppe=3|HY1=0|HY2=4

    Pro Zeile ist die 0 wechselnd entweder in HY1 oder HY2
    was nicht sein kann. Ich denke also, ich mache grundsätzlich was
    falsch. Kann mir jemand mal den entscheidenen Hinweis geben, wie ich
    vernünftig zähle. Ich denke es kommt wohl im Kern auf diesen if-Ausdruck an, den ich nicht gebacken kriege.

  • nikosch
    antwortet
    und erhalte einen Syntax Error.
    Welchen wäre eine gute Information

    Einen Kommentar schreiben:


  • HPR1974
    antwortet
    na distinct company wird nicht so gehen... (Vermutung)

    Einen Kommentar schreiben:


  • drsoong
    antwortet
    wohl eher count(if(...))
    habe ich so umgesetzt
    Code:
    count(if(q<3,distinct company,0)) AS HY1,count(if(q>2,distinct company,0)) AS HY2
    und erhalte einen Syntax Error.

    Den Tipp von Thomas muß ich noch antesten. Ich melde mich evtl. erst morgen wieder....

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    spontan fällt mir noch Folgendes ein (sofern ich mich nicht vertippt habe)

    Code:
    SELECT  Jahr, Land, Produktgruppe, COUNT(distinct company) AS HY1, NULL AS HY2
      FROM tabelle
     WHERE Jahr IN (2008,2009) 
       AND q < 3
     GROUP BY Jahr, Land, Produktgruppe
            
    UNION ALL
            
    SELECT  Jahr, Land, Produktgruppe, NULL AS HY1, COUNT(distinct company) AS HY2 
      FROM tabelle
     WHERE Jahr IN (2008,2009) 
       AND q > 2
     GROUP BY Jahr, Land, Produktgruppe    
    
    ORDER BY 1,2,3;
    Grüße
    Thomas

    Einen Kommentar schreiben:


  • HPR1974
    antwortet
    wohl eher count(if(...))

    Einen Kommentar schreiben:

Lädt...
X