1

在包含每个员工的员工 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
4

3 回答 3

7
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); 
于 2013-06-21T05:28:29.330 回答
0

它可能很简单:

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)

这将返回每个员工/天的一行,该员工/天的最早登录和最新注销。

于 2013-06-21T04:56:40.507 回答
0

在甲骨文中:

SELECT NAME, TO_CHAR(IN_DT,'DD-MM-YYYY') as DT, TO_CHAR(MIN(IN_DT),'HH24:MI:SS')  as LOGIN, TO_CHAR(MAX(OUT_DT),'HH24:MI:SS') as LOGOUT FROM USER_LOG GROUP BY NAME, TO_CHAR(IN_DT,'DD-MM-YYYY');

在此处输入图像描述

于 2017-05-11T09:55:35.560 回答