AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Daten nach Schichtzeitraum gruppieren
Thema durchsuchen
Ansicht
Themen-Optionen

Daten nach Schichtzeitraum gruppieren

Ein Thema von Rainer Wolff · begonnen am 1. Jun 2013 · letzter Beitrag vom 2. Jun 2013
Antwort Antwort
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#1

Daten nach Schichtzeitraum gruppieren

  Alt 1. Jun 2013, 14:21
Datenbank: Firebird • Version: 2.5.1 • Zugriff über: DBX
Hallo,

gibt es eine schöne Möglichkeit, eine Auswertung nach Schichtzeitraum zu machen.

Ich habe eine Tabelle mit Produktionsdaten, immer eine Zeile mit Datum/Uhrzeit und gefertigtem Typ.

Daraus sollte eine Übersicht extrahiert werden, die mir dann sagt:
Tag 1 Schicht 1 (8:00-14:00) 100 Stück
Tag 1 Schicht 2 (14:00-22:00) 125 Stück
Tag 1 Schicht 3 (22:00-6:00) xxx Stück
Tag 2 Schicht 1 ......

Ich könnte natürlich eine Spalte mit der Schichtnummer einführen und der Uhrzeit entsprechend füllen, aber vielleicht gibt es ja auch eine Möglichkeit der SQL-Abfrage

Gruß Rainer
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: Daten nach Schichtzeitraum gruppieren

  Alt 1. Jun 2013, 14:52
Vorab: beginnt die erste Schicht wirklich um 8:00 und nicht um 6:00?

Als Besonderheit ist zu berücksichtigen, daß die Stückzahlen zwischen 0:00 und 6:00 der dritten Schicht des Vortages zugerechnet werden. Mit einer einfachen Spalte Schichtnummer ist es also nicht getan. Man müsste also ein Schichtdatum und eine Schichtnummer zuordnen.

Nebenbei muss auch noch der Vollständigkeit halber geklärt werden, was an den Schichtgrenzen passieren soll.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
679 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Daten nach Schichtzeitraum gruppieren

  Alt 2. Jun 2013, 09:22
Wenn du das wirklich nur für diese Auswertung brauchst, dann geht das so
Code:
CREATE TABLE PROD (
    ID      BIGINT NOT NULL,
    TXT     VARCHAR(80),
    ANZAHL  INTEGER,
    ZEIT    TIMESTAMP);

select
cast(prod.zeit-.25 as date) schichtdatum,
CASE
  WHEN (EXTRACT(HOUR FROM prod.ZEIT) BETWEEN 8 and 13) then 1
  WHEN (EXTRACT(HOUR FROM prod.ZEIT) BETWEEN 14 and 21) then 2
  else 3
end schicht,
sum(prod.anzahl)
from prod
group by 1,2
In Firebird kann das aber auch als berechnetes Feld erstellt werden, welches du
dann sogar via Expression Index indizieren kannst (War Thema bei der Schulung
in Wardenburg an den Tagen wo du nicht da warst , ist aber in Köln auch
wieder Thema). Berechnete Felder belegen keinen eigenen Speicherplatz (abgesehen
vom Eintrag in rdb$relation_fields) und können wie jedes andere Feld auch
in anderen SQLs benutzt werden.

Wenn deine Schicht bis 6:00 Uhr geht kann du das Tagesdatum der Schicht immer aus
"Zeit - 0.25" berechnen (Mittags um 12 ist 0.5, Nachmittags 18:00 Uhr ist 0.75 usw.)

Beispiel DDL

Code:
/******************************************************************************/
/****              Generated by IBExpert 02.06.2013 08:55:48               ****/
/******************************************************************************/

CREATE TABLE PROD (
    ID      BIGINT NOT NULL,
    TXT     VARCHAR(80),
    ANZAHL  INTEGER,
    ZEIT    TIMESTAMP,
    SCHICHTDATUM COMPUTED BY (CAST (ZEIT-0.25 as date)),
    SCHICHT COMPUTED BY (CASE
  WHEN (EXTRACT(HOUR FROM ZEIT) BETWEEN 8 and 13) then 1
  WHEN (EXTRACT(HOUR FROM ZEIT) BETWEEN 14 and 21) then 2
  else 3
end)
);

ALTER TABLE PROD ADD PRIMARY KEY (ID);

CREATE INDEX PROD_IDX1 ON PROD COMPUTED BY (SCHICHT);
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: Daten nach Schichtzeitraum gruppieren

  Alt 2. Jun 2013, 10:32
Da die Auswertung nach Schichten nach meiner Erfahrung ein zentraler Bestandteil der Reports ist, sollte man sich Mühe geben, es richtig zu machen.

Ich hatte oft den Fall, das sich das Arbeitsmodell bezüglich der Schichten verändert hat: von 2 auf 3, dann auf 4 Schichten. Am Freitag ist Betriebsversammlung, da geht die Schicht nur bis 13:30, dafür machen wir ab nächster Woche Wochenendschichten von 06:00-12:00 usw. Und richtig lustig wird es, wenn die Abteilung nebenan nicht mitmacht-

Also benötige ich eigentlich im Datensatz des einzelnen Werkstücks neben der Zeit- auch die Schichtangabe. D.h. immer wenn ich einen Zeitstempel in meiner Tabelle eintrage ('Werkstück fertiggestellt um XX:YY von PP auf Maschine MM'), gebe ich die zu diesem Zeitpunkt gültige Schichtnummer mit an.

Dann können sich Schichtmodelle ändern, ein Sonderfall eintreten, die Abteilung nebenan eine Sonderlocke fahren, egal was. Meine Daten und Reports sind immer korrekt. Auch rückwirkend.

Das geht mit den hier beschrieben einfachen Vorschlägen nicht.
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
679 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Daten nach Schichtzeitraum gruppieren

  Alt 2. Jun 2013, 11:46
... Das geht mit den hier beschrieben einfachen Vorschlägen nicht.
Das war aber auch gar nicht Rainers Ausgangslage ...

"Ich habe eine Tabelle mit Produktionsdaten, immer eine Zeile mit Datum/Uhrzeit und gefertigtem Typ."

Warum soll er für Probleme, die er wahrscheinlich gar nicht hat, das komplette Datenmodell
in Frage stellen ....

Der Ansatz eines variablen Werkskalenders ist aber nicht schlecht, aber ein komplettes Thema für sich
und statisch kann man zu jedem Datensatz natürlich alles möglich speichern, bis hin zum Namen des
Mitarbeiters, der das gefertigt hat und welche Werkzeuge er benutzt hat ...
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung

Geändert von IBExpert ( 2. Jun 2013 um 11:58 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz