2014-05-14 6 views
0

에 최대 및 최소 값 기록을 제외 :내가 출석 테이블의 레코드 다음 한 오라클

Attendance_Date | Emp_Code 
-------------------+----------- 
07-FEB-14 08.55.00 | 1681 
07-FEB-14 09.05.00 | 1829 
07-FEB-14 17.31.00 | 1829 
07-FEB-14 17.35.00 | 1681 
08-FEB-14 08.54.00 | 1681 
08-FEB-14 08.56.00 | 1829 
08-FEB-14 17.31.00 | 1681 
08-FEB-14 17.31.00 | 1829 
08-FEB-14 17.31.00 | 1829 

지금 날짜를 기준으로 모든 직원에 대한 최대 시간 & 최소 시간 스탬프를 레코드를 제외 할 필요가있다. 결과에는

Attendance_Date | Emp_Code 
-------------------+---------- 
08-FEB-14 17.31.00 | 1829 

과 같이 1 개의 레코드 만 표시되어야합니다. emp_code 1829에는 08-02-14에 3 개의 레코드가 있기 때문입니다. 관계가있는 경우

답변

1

하나의 옵션은 최소한이있는 경우 (동점 행을 모두 제외 할 거라고,이 데이터는 관계가없는 것으로 가정

SELECT attendance_date, emp_code 
    FROM (SELECT attendance_date, 
       emp_code, 
       min(attendance_date) over 
       (partition by emp_code, trunc(attendance_date)) min_attendance_date 
       max(attendance_date) over 
       (partition by emp_code, trunc(attendance_date)) max_attendance_date 
      FROM your_table) 
WHERE attendance_date != min_attendance_date 
    AND attendance_date != max_attendance_date 

수 또는 것 또는 최대 값).

+0

lag() 및 lead()를 사용하고 어느 것이 null인지 감지 할 수 있다고 가정합니다. –

+0

타이를 끊으려면'dense_rank()'또는'row_number()'를 대신 사용할 수 있습니다. –