Announcement

Collapse
No announcement yet.

Anzahl der Tage ermitteln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Anzahl der Tage ermitteln

    Hallo Forum,

    ich habe eine gruppierte Liste mit der Warenanzahl pro Woche pro Quartal (01-03 bedeutet z.B. Januar bis März).
    Nun würde ich gerne noch eine Spalte mit der Anzahl der jeweiligen Wochentagen hinzufügen. Also jeweils die beteiligten Tage zählen (z.B. 12 Montage). Es gibt eine Spalte "VKDatum", die man nehmen könnte.
    Wie mache ich das? Irgendwie mit einer Unterabfrage und DISTINCT auf die Tage?

    So sieht es aktuell aus:

    [highlight=sql]SELECT "Wochentag", "Monatsbereich", Count(*) as "Anzahl"
    FROM VK
    GROUP BY "Wochentag", "Monatsbereich";[/highlight]

    Code:
    Wochentag	Monatsbereich	Anzahl
    Montag		01-03		32
    Montag		04-06		23
    Montag		07-09		23
    Montag		10-12		10
    Dienstag	01-03		35
    Dienstag	04-06		29
    Dienstag	07-09		35
    Dienstag	10-12		9
    Mittwoch	01-03		37
    Mittwoch	04-06		37
    Mittwoch	07-09		30
    Mittwoch	10-12		10
    Donnerstag	01-03		27
    Donnerstag	04-06		29
    Donnerstag	07-09		34
    Donnerstag	10-12		11
    Freitag		01-03		33
    Freitag		04-06		23
    Freitag		07-09		32
    Freitag		10-12		9
    Danke,
    Yusuf

  • #2
    was genau ist die Frage, wenn die Abfrage schon funktioniert?

    Comment


    • #3
      Ich würde gerne eine zweite Spalte mit der Anzahl der Tage einfügen. Die Spalte "Anzahl" gibt die Gesamtsumme der verkauften Artikel aus und jetzt soll noch zusätzlich die Anzahl der beteiligten Tage aufgelistet werden.

      Z.B. wenn an den Montagen 32 Stück verkauft wurden, dann sollte 12 Montage neben dran stehen (bzw. mehr, da es ja auch 5 Montage pro Monat geben könnte).

      Comment


      • #4
        Die Anzahl der einzelnen Wochentage pro Monat im Jahr 2011 bekommt man z.B. mit einem ROW-Generator heraus. Damit könnte man die obige Abfrage verbinden.
        Code:
        WITH tage AS
         (SELECT TO_DATE('01012011', 'DDMMYYYY')+level-1 tag FROM dual CONNECT BY LEVEL<=366)
        SELECT mons, wts, sum(1) anzahl  
          FROM
          (SELECT tag, 
                  to_char(tag,'D')    wtz, 
                  to_char(tag,'DY')   wts, 
                  to_char(tag,'MM')   monz,
                  to_char(tag,'MON')  mons,
                  to_char(tag,'YYYY') jahr 
             FROM tage)
        WHERE wtz<6      
          AND jahr='2011'
        GROUP BY wts, wtz, mons, monz     
        ORDER BY monz, wtz;
        
        
        MONS WTS     ANZAHL
        ---- --- ----------
        JAN  MO           5
        JAN  DI           4
        JAN  MI           4
        JAN  DO           4
        JAN  FR           4
        FEB  MO           4
        FEB  DI           4
        FEB  MI           4
        FEB  DO           4
        FEB  FR           4
        MRZ  MO           4
        MRZ  DI           5
        ...
        Aber eigentlich ist eine Auswertung auf diesen Daten schon zu spät, die Zahlen stammen doch irgendwo her, z.B. aus den Tagesverkaufszahlen, da müsste man eigentlich ansetzen.

        Comment


        • #5
          Hallo,

          ich konnte es jetzt so lösen:

          [highlight=sql]SELECT "Wochentag", "Monatsbereich", Count(*) AS "Anzahl", Count(DISTINCT "VKDatum") as "Tage"
          FROM VK
          GROUP BY "Wochentag", "Monatsbereich";[/highlight]

          Viele Grüße,
          Yusuf

          Comment

          Working...
          X