borukthedwarf
Neuer Benutzer
- Beiträge
- 4
Hallo
Ich habe folgende Frage.
Zur Erstellung der Kommissionierleistung in einem Lager will ich für jeden Mitarbeitenden pro Tag seine Anzahl Picks (Picks done) und die Menge (Amount done).
Mein Probleme sind im Moment
- dass es fast ein 24 Stunden Betrieb ist und ich nun Mühe habe mit dem Übergang bei Mitternacht
- Die Schichten können sich leicht überlappen, besonders der Übergang von Nacht zu Frühschicht am Morgen
- an mehreren Standorten sind die Schichten nicht immer gleich
- Es kommt oftmals vor, dass zwar die Schichten definiert sind von der Zeit, aufgrund der Arbeit die Personen jedoch früher/später gehen
Einschränkungen:
- Es gibt in keiner Tabelle ein Merkmal ob Mitarbeiter XY in der Nacht arbeitet/am Tag etc.
- Es können keine neuen Tabellen gemacht werden
Ziel:
- Früh- und Tagschicht sind ja relativ einfach zuzuordnen, diese sollen einfach dem aktuellen Tag sein
- Die Nachtschicht beginnt am Tag 1 und endet ihre Schicht am Tag 2, hier soll die ganze Leistung dem Tag 1 angerechnet werden
Hier wie die Schichten ungefähr aussehen
Ich hab es wie folgt versucht. Wenn die Zeit kleiner als 07:00 ist, soll alles dem VOrtag angerechnet werden, ansosten dem aktuellen Tag.
Leider ist das Ergebniss aber nicht korrekt.
Hat hier jemand eine clevere Idee wie ich das kösen könnte?
Mfg
Ich habe folgende Frage.
Zur Erstellung der Kommissionierleistung in einem Lager will ich für jeden Mitarbeitenden pro Tag seine Anzahl Picks (Picks done) und die Menge (Amount done).
Mein Probleme sind im Moment
- dass es fast ein 24 Stunden Betrieb ist und ich nun Mühe habe mit dem Übergang bei Mitternacht
- Die Schichten können sich leicht überlappen, besonders der Übergang von Nacht zu Frühschicht am Morgen
- an mehreren Standorten sind die Schichten nicht immer gleich
- Es kommt oftmals vor, dass zwar die Schichten definiert sind von der Zeit, aufgrund der Arbeit die Personen jedoch früher/später gehen
Einschränkungen:
- Es gibt in keiner Tabelle ein Merkmal ob Mitarbeiter XY in der Nacht arbeitet/am Tag etc.
- Es können keine neuen Tabellen gemacht werden
Ziel:
- Früh- und Tagschicht sind ja relativ einfach zuzuordnen, diese sollen einfach dem aktuellen Tag sein
- Die Nachtschicht beginnt am Tag 1 und endet ihre Schicht am Tag 2, hier soll die ganze Leistung dem Tag 1 angerechnet werden
Hier wie die Schichten ungefähr aussehen
Ich hab es wie folgt versucht. Wenn die Zeit kleiner als 07:00 ist, soll alles dem VOrtag angerechnet werden, ansosten dem aktuellen Tag.
Leider ist das Ergebniss aber nicht korrekt.
SQL:
SELECT
picking.userid,
TRUNC(CAST(FROM_TZ(picking.starttime, 'UTC') AS TIMESTAMP WITH TIME ZONE) AT TIME ZONE 'Europe/Zurich') - INTERVAL '1' DAY * CASE WHEN EXTRACT(HOUR FROM CAST(FROM_TZ(picking.starttime, 'UTC') AS TIMESTAMP WITH TIME ZONE) AT TIME ZONE 'Europe/Zurich') >= 7 THEN 0 ELSE 1 END AS pickingdate,
COUNT(picking.pickedamount_baseqty) AS "Picks done",
SUM(picking.pickedamount_baseqty) AS "Amount done"
FROM picking
LEFT JOIN pickingorders ON pickingorders.orderid = picking.orderid
WHERE CAST(FROM_TZ(picking.starttime, 'UTC') AS TIMESTAMP WITH TIME ZONE) AT TIME ZONE 'Europe/Zurich' >= TIMESTAMP '2023-07-03 00:00:00'
AND CAST(FROM_TZ(picking.finishtime, 'UTC') AS TIMESTAMP WITH TIME ZONE) AT TIME ZONE 'Europe/Zurich' <= TIMESTAMP '2023-07-22 23:59:59'
AND picking.usecase = 'PICKING'
GROUP BY
picking.userid,
TRUNC(CAST(FROM_TZ(picking.starttime, 'UTC') AS TIMESTAMP WITH TIME ZONE) AT TIME ZONE 'Europe/Zurich') - INTERVAL '1' DAY * CASE WHEN EXTRACT(HOUR FROM CAST(FROM_TZ(picking.starttime, 'UTC') AS TIMESTAMP WITH TIME ZONE) AT TIME ZONE 'Europe/Zurich') >= 7 THEN 0 ELSE 1 END
ORDER BY
picking.userid, pickingdate;
Hat hier jemand eine clevere Idee wie ich das kösen könnte?
Mfg