[英]How to extract minimum and maximum time from a table in Oracle?
在包含每个员工的员工ID,每个员工的登录时间和注销时间的表中,我需要每天提取登录时间中的最小值和注销时间中的最大值。 问题在于,员工每天都可以多次登录和注销。 因此,我们有一些看起来像这样的样本数据,
NAME EMPID LOGIN TIME LOGOUT TIME
user1 37 16-JAN-12 03.07.37 16-JAN-12 03.07.44
user5 21 16-JAN-12 02.00.36 16-JAN-12 04.45.34
user3 12 16-JAN-12 05.35.35 16-JAN-12 06.39.57
user3 40 16-JAN-12 02.54.13 16-JAN-12 07.12.16
user4 33 16-JAN-12 07.29.43 16-JAN-12 07.59.42
user1 40 16-JAN-12 07.12.39 16-JAN-12 07.59.50
user3 30 16-JAN-12 11.30.50 16-JAN-12 08.02.42
user990 31 17-JAN-12 11.46.12 17-JAN-12 01.46.13
user29 23 17-JAN-12 10.39.18 17-JAN-12 05.00.02
user20 21 17-JAN-12 04.59.37 17-JAN-12 05.00.17
user990 40 17-JAN-12 10.55.48 17-JAN-12 05.00.50
user4 23 17-JAN-12 05.00.11 17-JAN-12 05.01.08
user4 21 17-JAN-12 04.59.37 17-JAN-12 05.01.21
我试过了 它只工作一天,
SELECT username, MIN(login_time), MAX(logout_time)
FROM Table_Name
WHERE trunc(login_time) = '19-JAN-12'
GROUP BY username;
这给了我输入日期的以下结果。 这就是我想要的每个约会,
NAME
user1 19-JAN-12 11.00.26 19-JAN-12 08.00.53
user3 19-JAN-12 11.05.53 19-JAN-12 11.36.02
user29 19-JAN-12 09.49.32 19-JAN-12 06.48.08
user990 19-JAN-12 10.59.59 19-JAN-12 08.11.15
use23 19-JAN-12 06.40.36 19-JAN-12 08.36.07
user43 19-JAN-12 11.23.05 19-JAN-12 08.28.02
user89 19-JAN-12 02.38.54 19-JAN-12 07.28.02
user4 19-JAN-12 01.24.09 19-JAN-12 06.01.07
user7 19-JAN-12 03.29.17 19-JAN-12 08.34.02
user9 19-JAN-12 09.42.13 19-JAN-12 06.35.54
SELECT username, TRUNC(login_time), min(login_time), max(logout_time)
FROM table_name
GROUP BY username, TRUNC(login_time)
ORDER BY username, TRUNC(login_time);
它可能很简单:
SELECT TRUNC(LOGIN_TIME]),NAME, EMPID, MIN(LOGIN_TIME), MAX(LOGOUT_TIME)
FROM Table_Name
GROUP BY TRUNC(LOGIN_TIME),NAME, EMPID
ORDER BY EMPID, TRUNC(LOGIN_TIME)
这将为每位员工/天返回一行,该员工/天的最早登录和最新注销。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.