Oracle 查询以获取特定时间的数据
我需要写一个考勤查询,给出当前时间和前10分钟的考勤。总共有20项记录。 我有以下问题。它为我提供了当前时间的正确数据。但之前的出席人数继续减少。 例如:下午12:30,出席人数为2000人。但当时间达到下午1:30时,12:30对应的出席人数显示得非常少Oracle 查询以获取特定时间的数据,oracle,join,Oracle,Join,我需要写一个考勤查询,给出当前时间和前10分钟的考勤。总共有20项记录。 我有以下问题。它为我提供了当前时间的正确数据。但之前的出席人数继续减少。 例如:下午12:30,出席人数为2000人。但当时间达到下午1:30时,12:30对应的出席人数显示得非常少 SELECT TO_CHAR (each_sec, 'HH24:MI') p_time, COUNT (each_sec) cnt FROM (SELECT * FROM (SELECT d.userid, d.logda
SELECT TO_CHAR (each_sec, 'HH24:MI') p_time, COUNT (each_sec) cnt
FROM (SELECT *
FROM (SELECT d.userid, d.logdate
FROM atendance_data d
JOIN
(SELECT userid, MAX (logdate) logdate
FROM atendance_data
WHERE TRUNC (logdate) = TRUNC (SYSDATE)
GROUP BY userid) m
ON d.userid = m.userid AND d.logdate = m.logdate
WHERE d.c1 NOT IN ('Check-Out', 'Break-Out')) c
JOIN
(SELECT SYSDATE + (1 - LEVEL) / 24 / 3600 * 600 each_sec
FROM DUAL
CONNECT BY LEVEL <= 20) s ON c.logdate <= s.each_sec
)
GROUP BY each_sec
ORDER BY each_sec
我必须写一个where条件,以获取logdate的最大值,即小于每秒。我想这就是我错的地方。但是我不知道怎么做
谁能帮我做这个?
提前谢谢。我已经这样做了。谢谢大家的回复
SELECT COUNT (*), each_sec
FROM (SELECT a.userid, a.logdate, a.c1, each_sec
FROM atendance_data a,
(SELECT userid, MAX (logdate) logdate, each_sec
FROM (SELECT userid, logdate, c1, each_sec
FROM (SELECT a.USERID,A.LOGDATE,A.C1, b.each_sec
FROM atendance_data a
JOIN
(SELECT SYSDATE
+ (1 - LEVEL)
/ 24
/ 3600
* 600 each_sec
FROM DUAL
CONNECT BY LEVEL <= 20) b
ON a.logdate <= b.each_sec
AND trunc(a.logdate) =trunc(sysdate)
))
GROUP BY userid, each_sec) b
WHERE a.userid = b.userid
AND a.logdate = b.logdate
AND Trunc (a.logdate) = trunc(sysdate))
WHERE c1 NOT IN ('Check-Out', 'Break-Out')
GROUP BY each_sec
ORDER BY each_sec;
请描述您的表格并提供测试数据。没有这些,没有人能帮助你。检查的时间间隔是多少????