基本上尝试创建一个选择查询,其条件的时间跨度需要跨越x天,但仅在每天的某些小时之间(假设是1m到3am)。
这是我所做的,但有一个更清晰的递归方式吗?
提前谢谢你们!
SELECT e.EMPLOYEENUMBER, ea.EMPID, COUNT(1)
FROM EMPLOYEEACTIVITY ea, EMPLOYEE e
WHERE ea.EMPID = e.ID
AND (ea.ENTRYTIME BETWEEN '2019-02-08 01:00:00' and '2019-02-08 03:00:00'
OR ea.ENTRYTIME between '2019-02-07 01:00:00' and '2019-02-07 03:00:00'
OR ea.ENTRYTIME between '2019-02-06 01:00:00' and '2019-02-06 03:00:00'
OR ea.ENTRYTIME between '2019-02-05 01:00:00' and '2019-02-05 03:00:00'
OR ea.ENTRYTIME between '2019-02-04 01:00:00' and '2019-02-04 03:00:00'
OR ea.ENTRYTIME between '2019-02-03 01:00:00' and '2019-02-03 03:00:00'
OR ea.ENTRYTIME between '2019-02-02 01:00:00' and '2019-02-02 03:00:00'
OR ea.ENTRYTIME between '2019-02-01 01:00:00' and '2019-02-01 03:00:00')
AND ea.status = 'CON'
GROUP BY e.EMPLOYEENUMBER, ea.EMPID
ORDER BY COUNT(1) DESC;
相反,你可以这样做:
SELECT e.EMPLOYEENUMBER, ea.EMPID, COUNT(1)
FROM EMPLOYEEACTIVITY ea, EMPLOYEE e
WHERE ea.EMPID = e.ID
AND EXTRACT(HOUR FROM ea.ENTRYTIME) BETWEEN 1 and 3
AND ea.ENTRYTIME BETWEEN '2019-02-01' AND '2019-02-08'
AND ea.status = 'CON'
GROUP BY e.EMPLOYEENUMBER, ea.EMPID
ORDER BY COUNT(1) DESC;