週ごとに各従業員の合計アンダータイムを得る方法を教えてください。 1か月あたり。私にはview
があり、その中に従業員1人当たりの列はundertime
とovertime
となっています。しかし、私は週にTotalUndertime
を取得する必要があります。週2列から合計を得る方法
|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 | |
従業員がMonday
にUndertime
を持っている場合、従業員はTuesday - Friday
から、次の日にUndertime
のために支払うことができます。または、Tuesday
に従業員のUndertime
がある場合、従業員は上記の表のUndertime. The
TotalUndertime = "00:01:00"の代金を支払うためにWednesday - Friday
を持っています。
日付と時刻を使用したmysqlクエリに関してはちょうど初心者です。私は関数や手続きを使うべきですか?
このコードを使用して取得しましたが、機能しませんでした。
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 ;
どのような提案が私に非常に役立ちます。 ありがとうございます。
私はCOALESCE()関数を使用していません。結果は整数であったにもかかわらず、多くの助けとなりました。 -12、4、など私は分を取得する方法を見つける必要があります。 – Clorae
私は謝罪しましたが、あなたのアンダータイムと残業の列のデータ型に気付きませんでした。 sqlfiddleを介してテストしてみましょう。私はあなたに戻ってきます。 – Eduard
SEC_TO_TIME関数が追加されました。 – Eduard