Advertisement
DjonathanKrause

Diferença de hora entre logins

Mar 3rd, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. SELECT CASE
  2.         WHEN COUNT(emp.logon_end_time) > 1 THEN 'Sim' ELSE 'Não'
  3.       END AS "Teve Queda Hoje?", emp.EMPLOYEE_ID
  4. FROM t_employee_logon emp
  5. WHERE TRUNC(emp.logon_end_time) = TRUNC(SYSDATE)
  6. GROUP BY emp.logon_end_time, emp.EMPLOYEE_ID
  7. HAVING COUNT(emp.logon_end_time) > 1;
  8.  
  9. SELECT *
  10. FROM t_employee_logon emp
  11. WHERE employee_id = 'L84979'
  12. AND TRUNC(emp.logon_end_time) = TRUNC(SYSDATE)
  13. ORDER BY LOGON_START_DATE DESC, LOGON_START_TIME DESC;
  14.  
  15.  
  16. SELECT ROUND((emp.logon_start_time - LAG(emp.logon_start_time) OVER (ORDER BY emp.logon_start_time)) * 1440) || ' minutos' AS "Minutos entre logins"
  17. FROM t_employee_logon emp
  18. WHERE employee_id = '98611'
  19. AND TRUNC(emp.logon_end_time) = TRUNC(SYSDATE)
  20. ORDER BY LOGON_START_DATE DESC, LOGON_START_TIME DESC
  21. FETCH FIRST 1 ROW only;
  22.  
  23. SET SERVEROUTPUT ON
  24. DECLARE
  25.   v_aux VARCHAR(50);
  26.  
  27.   CURSOR c1 IS
  28.     SELECT CASE
  29.             WHEN COUNT(emp.logon_end_time) > 1 THEN 'Sim' ELSE 'Não'
  30.           END AS "Teve Queda Hoje?", emp.EMPLOYEE_ID
  31.     FROM t_employee_logon emp
  32.     WHERE TRUNC(emp.logon_end_time) = TRUNC(SYSDATE)
  33.     GROUP BY emp.logon_end_time, emp.EMPLOYEE_ID
  34.     HAVING COUNT(emp.logon_end_time) > 1;
  35.    
  36. BEGIN
  37.   FOR r1 IN c1 LOOP
  38.     SELECT ROUND((emp.logon_start_time - LAG(emp.logon_start_time) OVER (ORDER BY emp.logon_start_time)) * 1440) || ' minutos' AS "Minutos entre logins"
  39.     INTO v_aux
  40.     FROM t_employee_logon emp
  41.     WHERE employee_id = r1.employee_id
  42.     AND TRUNC(emp.logon_end_time) = TRUNC(SYSDATE)
  43.     ORDER BY LOGON_START_DATE DESC, LOGON_START_TIME DESC
  44.     FETCH FIRST 1 ROW only;
  45.    
  46.     DBMS_OUTPUT.put_line(r1.employee_id || ': '  || v_aux);
  47.   END LOOP;  
  48. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement