Ankündigung

Einklappen
Keine Ankündigung bisher.

bedingtes Zählen

Einklappen

Unconfigured Ad Widget

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

  • 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.
    Es ist schon alles gesagt. Nur noch nicht von allen.


  • #2
    wohl eher count(if(...))

    Kommentar


    • #3
      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

      Kommentar


      • #4
        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....
        Es ist schon alles gesagt. Nur noch nicht von allen.

        Kommentar


        • #5
          na distinct company wird nicht so gehen... (Vermutung)

          Kommentar


          • #6
            und erhalte einen Syntax Error.
            Welchen wäre eine gute Information
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar

            Lädt...
            X