Wie bekomme ich die Gesamtunterzeit für jeden Mitarbeiter pro Woche. pro Monat. Ich habe eine view
, in der es Spalten undertime
und overtime
pro Tag pro Mitarbeiter hat. aber ich muss die TotalUndertime
pro Woche bekommen.Wie bekomme ich die Summe aus 2 Spalten in einer Woche?
|EmpID |DayofWeek|DatePresent|Overtime |Undertime|
|3050001|Friday |2016-04-01 | |00:01:00 |
|3050001|Monday |2016-04-04 | |01:00:00 |
|3050001|Tuesday |2016-04-05 |00:30:00 | |
|3050001|Wednesday|2016-04-06 |00:30:00 | |
|3050001|Thursday |2016-04-07 |00:05:00 | |
|3050001|Friday |2016-04-08 |00:05:00 | |
Wenn der Arbeitnehmer eine Undertime
auf Monday
hat, kann der Mitarbeiter für die Undertime
an folgenden Tagen von Tuesday - Friday
zu zahlen. Oder wenn der Angestellte eine Undertime
auf Tuesday
hat, hat der Angestellte Wednesday - Friday
, um für die Undertime. The
TotalUnderzeit = "00:01:00" in der Tabelle zu zahlen, die oben gezeigt wird.
Ich bin nur ein Neuling, wenn es um MySQL Abfragen mit Datum und Uhrzeit geht. Sollte ich Funktion oder Prozedur verwenden?
Ich habe diesen Code verwendet, um es zu bekommen, aber es hat nicht funktioniert.
CREATE DEFINER = `root`@`localhost` PROCEDURE `getUndertime` (IN `varDatePresent` DATE, IN `varEmpID` VARCHAR(8)) NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER
BEGIN SELECT DAY(LAST_DAY(varDatePresent))
INTO @totaldays ;
SET @daycount =0;
WHILE(
@daycount < @totaldays
) DO SELECT Undertime
FROM view_dtr
WHERE EmpID LIKE '%varEmpID%'
AND DatePresent = varDatePresent
INTO @undertime ;
SELECT Overtime
FROM view_dtr
WHERE EmpID LIKE '%varEmpID%'
AND DATE_ADD(DatePresent, INTERVAL 1
DAY)
INTO @overtime ;
SET @totalUndertime = @undertime - @overtime ;
SET @daycount = @daycount +1;
END WHILE;
SELECT @totalUndertime ;
END ;
Jeder Vorschlag wird mir sehr helfen. Vielen Dank im Voraus.
Ich habe es vorher getan, aber ohne die Funktion COALESCE(). Es half sehr, obwohl die Ergebnisse ganze Zahlen waren, was bedeutet, dass es die Stunden berechnet, z. -12, 4, etc. Ich muss einen Weg finden, um auch die Minuten zu bekommen. – Clorae
Entschuldigung, ich habe den Datentyp für Ihre Unterzeit- und Überstundenspalte nicht bemerkt. Lass mich das via sqlfiddle testen und ich melde mich bei dir. – Eduard
SEC_TO_TIME-Funktion hinzugefügt. – Eduard