Hallo miteinander,
ich hoffe, ihr könnt mir bei meinem Problem weiterhelfen.
Ich habe eine Umfangreiche Datenbank, bei der u.a. eine Tabelle unserer Störungen enthält.
Dort werden u.a. Datum, Projekt, Fehlercode, Häufigkeit der Störung und Störungsdauer erfasst.
Diese wird jeweils pro Jahr erfasst.
Jetzt soll eine Abfrage her, welche Die Top 5-Störungen pro Monat und Projekt (momentan 4 Stk) erfasst. Häufigkeit und Dauer sollen hierbei pro Fehlercode zusammengerechnet werden.
Leider habe ich bis jetzt noch keine intelligente Möglichkeit gefunden, das zu realisieren.
Gibt es eine Möglichkeit, diese in einer Abfrage zu Filtern, oder muss ich "in den sauren Apfel beißen" und pro Monat und
und Projekt eine einzelne Abfrage um das dann in einer Tabelle zu vereinen? Wäre es dann hierbei sinnvoll, eine weitere Teildatenbank zu erstellen um diese Abfragen (Was hier 12x4 Abfragen wären) sozusagen extra zu halten?
Vielen Dank schonmal für euere Hilfe.
Hallo,
vom Grundsatz geht das über eine Abfrage in der Art:
SELECT TOP 5
Projekt, Sum(Haeufigkeit +Dauer) AS SumStoerung
FROM Tbl_Stoerung
GROUP BY Projekt
ORDER BY Sum(Haeufigkeit +Dauer) DESC;
wobei zu prüfen ist, ob Häufigkeit und Dauer einfach so addiert werden können. Ggf musst du eben Felder mit Datumswerten etc berücksichtigen, kannst du im GUI leicht probieren.
Hi,
wenn die TOP 5 pro Projekt und Monat ermittelt werden sollen, kannst du das mit Hilfe einer Unterabfrage lösen:
Select t1.tabID, t1.Datum, t1.Projekt, t1.Fehlercode, t1.Häufigkeit, t1.Störungsdauer
FROM tbl_Stoerungen As t1
WHERE t1.tabID IN (SELECT TOP 5 t2.tabID
FROM tbl_Stoerungen As t2
WHERE Format(t2.Datum, "yyyymm") = Format(t1.Datum, "yyyymm") AND t2.Projekt = t1.Projekt
ORDER BY Sum(t2.Haeufigkeit) Desc, Sum(t2.Dauer) DESC);
PS:
Merke gerade, dass es so einfach wohl doch nicht geht, es fehlt noch die Zusammenfassung pro Fehlercode. Aber vielleicht ist das schon ein Schubs in die richtige Richtung.
PPS:
Häufigkeit und Dauer zu addieren halte ich für keine gute Idee, allerdings müsste noch festgelegt werden, welcher Wert für die Sortierung die höhere Priorität hat.
Vielen Dank erstmal für euere Antworten. Ich werd das am Montag gleich mal probieren, wenn ich wieder vor Ort bin.
Die Hauptpriorität hat erst einmal nur die Dauer.
Sprich welcher Fehlercode kostet uns monatlich die meiste Zeit bei den einzelnen Projekten.
Die Häufigkeit ist für uns vorerst nur eine Nebeninformation.
ZitatDort werden u.a. Datum, Projekt, Fehlercode, Häufigkeit der Störung und Störungsdauer erfasst.
Häufigkeit und Dauer sind da schon Tageszusammenfassungen, oder wie ist das zu verstehen?
Zitat von: ebs17 am Oktober 01, 2015, 23:19:09
Häufigkeit und Dauer sind da schon Tageszusammenfassungen, oder wie ist das zu verstehen?
Ja, die Häufigkeit und Dauer werden bereits aus den Schichten pro Tag zusammengezählt.
Somit hab ich als Ergebnis z.B.
Datum Störung Projekt Häufigkeit Dauer in Minuten
08.10.15 Problem A Projekt A 5 45
08.10.15 Problem B Projekt A 7 75
08.10.15 Problem A Projekt B 1 25
etc.
Etwa so könnte es gehen:
SELECT
A.StMonat,
A.Störung,
A.Projekt,
A.AnzH,
A.SumDauer
FROM
(
SELECT
Year(Datum) * 100 + Month(Datum) AS StMonat,
Störung,
Projekt,
COUNT(Häufigkeit) AS AnzH,
SUM(Dauer) AS SumDauer
FROM
tbl_Stoerungen
GROUP BY
Year(Datum) * 100 + Month(Datum),
Störung,
Projekt
) AS A
WHERE
A.SumDauer IN
(
SELECT TOP 5
B.SumDauer
FROM
(
SELECT
Year(Datum) * 100 + Month(Datum) AS StMonat,
Störung,
Projekt,
COUNT(Häufigkeit) AS AnzH,
SUM(Dauer) AS SumDauer
FROM
tbl_Stoerungen
GROUP BY
Year(Datum) * 100 + Month(Datum),
Störung,
Projekt
) AS B
WHERE
B.StMonat = A.StMonat
AND
B.Störung = A.Störung
AND
B.Projekt = A.Projekt
ORDER BY
B.SumDauer DESC)