Announcement

Collapse
No announcement yet.

Max(Count(*)) - Maximum einer Anzahl

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

  • Max(Count(*)) - Maximum einer Anzahl

    Hallo,

    ich habe eine Tabelle in der Einsatzzeiten aufgelistet sind. Dort steht:
    id, abteilung, mitarbeiter, beginn, ende, datum
    Wobei beginn und ende eine Uhrzeit (hhmmss) ist und das datum als yyyymmdd abgelegt wurde.

    Jetzt möchte ich gerne eine Auflistung, welche Abteilung zu welcher Stunde wie viele Einsätze angefangen hat, wieviele minimal, maximal, durchschnittlich. Dabei sollen alle Datensätze herangezogen werden (alle Tage).

    [highlight=SQL]
    SELECT abteilung, Substr(beginn, 1, 2) as stunde,
    Count(*) as anzahl,
    Max( Count(*) ) as anzahlmax,
    Min( Count(*) ) as anzahlmin,
    Avg( Count(*) ) as anzahlavg
    FROM tabelle
    GROUP BY abteilung, Substr(beginn, 1, 2)
    [/highlight]

    Aber das geht so ja nicht. Ich habe es wie folgt probiert, bekomme dabei aber immer die gleichen Werte wie bei Count(*).

    [highlight=SQL]
    Min( Count(*) ) OVER ( PARTITION BY abteilung, Substr(beginn, 1, 2) ) as anzahlmin1,
    Min( ( SELECT Count(*)
    FROM "tabelle" tblin
    WHERE tblin.abteilung = tblout.abteilung AND Substr(tblin.beginn, 1, 2) = Substr(tblout.beginn, 1, 2)

    ) ) as anzahlmin2,
    [/highlight]

    Wenn ich eine Woche habe von Montag bis Freitag und mir z.B. 12 Uhr anschaue (3, 4, 6, 7, 6), dann müsste z.B. bei Min 3 Einsätze stehen, bei Max 7 Einsätze und bei Avg 5,2 Einsätze.

    Grüße,
    Yusuf

  • #2
    So richtig deutlich find ich Deine Frage nicht, aber vielleicht willst Du soetwas:

    Code:
    select agg.Abteilung,
           agg.Zeitraun,
           agg.Stunde,
           sum(Anzahl) as SumEv,
           min(Anzahl) as MinEv,
           max(Anzahl) as MaxEv,
           avg(Anzahl) as AvgEv
      from (select x.abteilung,
                   to_char(x.datum, 'yyyy ww') as Zeitraum,
                   substr(x.beginn, 1, 2) as Stunde,
                   count(*) as Anzahl
              from Einsatzzeiten x
             group by x.Abteilung, x.Datum, substr(x.beginn, 1, 2)) agg
     group by agg.Abteilung, agg.Zeitraum, agg.Stunde
     order by Zeitraum, Stunde, Abteilung

    Wie macht man den eigentlich so schöne SQL Formatierung hier?
    Gruß, defo

    Comment


    • #3
      [highlight=sql]--Hier gehört Dein Text hin[/highlight]

      Comment


      • #4
        Vielen Dank fanderlf!
        Gruß, defo

        Comment


        • #5
          Danke defo, das ist so wie ich es brauche. Zuerst (als Quelle) die Anzahl berechnen und dann aus diesen Quellwerten den Durchschnitt etc. berechnen.
          Zuletzt editiert von Wursel; 07.12.2011, 21:11.

          Comment

          Working...
          X