35 lines
1020 B
SQL
35 lines
1020 B
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`workerTimeControl_calculateOddDays`()
|
|
BEGIN
|
|
/**
|
|
* Calculo de las fichadas impares por empleado y dia.
|
|
*
|
|
* @return tmp.workerTimeControlOddDays (userFk, dated)
|
|
*/
|
|
SET @cont := FALSE;
|
|
SET @lastUserFk:= NULL;
|
|
|
|
DROP TEMPORARY TABLE IF EXISTS tmp.workerTimeControlOddDays;
|
|
CREATE TEMPORARY TABLE tmp.workerTimeControlOddDays
|
|
SELECT sub2.userFk workerFk, sub2.dated
|
|
FROM (
|
|
SELECT userFk,
|
|
dated,
|
|
COUNT(*) cont2
|
|
FROM (
|
|
SELECT DATE(wtc.timed) dated,
|
|
userFk,
|
|
IFNULL(@cont, @cont := TRUE ),
|
|
IF(direction = 'in' OR userFk <> @lastUserFk, @cont := @cont+1, TRUE),
|
|
@cont cont,
|
|
@lastUserFk := userFk
|
|
FROM workerTimeControl wtc
|
|
WHERE wtc.timed BETWEEN TIMESTAMPADD(YEAR,-1,util.VN_CURDATE()) AND util.dayEnd(util.VN_CURDATE())
|
|
ORDER BY userFk, timed
|
|
LIMIT 10000000000000000000)sub
|
|
GROUP BY cont
|
|
HAVING cont2 MOD 2 = 1
|
|
)sub2;
|
|
END$$
|
|
DELIMITER ;
|