Newsletter Empfänger nach YEARWEEK()

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

  • Newsletter Empfänger nach YEARWEEK()

    Tag zusammen,

    nach langer Zeit wende ich mich wieder mal an euch. Ich habe einen Kunden mit einer internen Newsletteranwendung. Die Empfänger werden in einer Datenbank gespeichert in denen natürlich auch das Beitrittsdatum (datetime) hinterlegt ist.

    Jetzt würde ich gerne ein paar Statistiken anzeigen, aufgespaltet nach Kalenderwochen. Wenn ich mich für eine bestimmte Kalenderwoche interessiere sieht die Query so aus (z.B. KW 5 2012):
    Code:
    SELECT 
    
    count(*)
    
    FROM nl_recipients 
    
    WHERE 
    yearweek(created, 3) <= 201205
    Jetzt möchte ich natürlich das ganze Jahr in der Übersicht und irgendwie fehlt mir gerade jegliche Idee wie ich groupen muss damit für jede Zahl pro KW nur der Wert genommen wird der bis dahin "created" war, also alles was später "created" wurde nicht mitzählt...

    Habt ihr ein paar Tips für mich?
    Danke

  • #2
    GROUP BY yearweek(created, 3) …?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Ja - das ist die Idee... aber damit habe ich ja nur die, die sich in der Woche angemeldet haben. Ich möchte ja den "Ist-Zustand" pro Woche.

      Also (pseudo):
      Code:
      SELECT
      count(*) + count("alle vorherigen counts")
      
      FROM 
      nl_recipient
      
      GROUP BY 
      yearweek(created, 3)

      Kommentar


      • #4
        Du möchtest also für jede Woche die Werte der vorherigen Wochen mit aufsummiert haben?

        Das kannst du entweder anschließend in der Verarbeitung der Datensätze per Script machen – oder direkt in SQL, wenn du user-defined variables hinzunimmst.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Die Idee hatte ich auch schon verfolgt - anscheinend also der richtige Weg. Hier mein Ansatz
          Code:
          SELECT
          
          @yw:=yearweek(created, 3) AS kw, 
          count(created) AS new_recipients,
          (SELECT count(id) FROM nl_recipients WHERE yearweek(created, 3) <= @yw) as recipient_count
          
          FROM nl_recipients
          
          WHERE 
          year(created) = 2012
          
          GROUP BY 
          yearweek(created, 3)
          Verbesserungsvorschläge gerne gewünscht

          Kommentar

          Lädt...
          X