2016-02-07 2 views
-1

Может ли кто-нибудь помочь в следующем запросе, что я хочу изменить его, не используя группу, и в то же время я получаю тот же результат.Удалить группу по запросу с тем же результатом

SELECT  EMPLOYEE_ID   , 
      FIRST_NAME   , 
      LAST_NAME    , 
      EMAIL     , 
      PHONE_NUMBER   , 
      HIRE_DATE    , 
      JOB_ID    , 
      SALARY    , 
      NVL(COMMISSION_PCT,0) , 
      MANAGER_ID   , 
      DEPARTMENT_ID 
FROM  EMPLOYEES 
WHERE  EMPLOYEE_ID 
IN   (SELECT MANAGER_ID 
      FROM EMPLOYEES) 
OR   DEPARTMENT_ID = (SELECT DEPARTMENT_ID 
          FROM DEPARTMENTS 
          WHERE UPPER(DEPARTMENT_NAME) = 'SALES') 
OR   TO_CHAR(HIRE_DATE,'YYYY')<=TO_CHAR(SYSDATE,'YYYY')-10 
GROUP BY EMPLOYEE_ID  , 
      FIRST_NAME  , 
      LAST_NAME  , 
      EMAIL   , 
      PHONE_NUMBER  , 
      HIRE_DATE  , 
      JOB_ID   , 
      SALARY   , 
      COMMISSION_PCT , 
      MANAGER_ID  , 
      DEPARTMENT_ID 
HAVING  AVG(SALARY) > 1000; 

ответ

0

меня найти решение, как показано ниже:

SELECT  E.EMPLOYEE_ID   , 
      E.FIRST_NAME   , 
      E.LAST_NAME    , 
      E.EMAIL     , 
      E.PHONE_NUMBER   , 
      E.HIRE_DATE    , 
      E.JOB_ID    , 
      E.SALARY    , 
      NVL(E.COMMISSION_PCT,0) , 
      E.MANAGER_ID   , 
      E.DEPARTMENT_ID 
FROM  EMPLOYEES E 
WHERE  EMPLOYEE_ID 
IN   (SELECT MANAGER_ID 
      FROM EMPLOYEES) 
OR   DEPARTMENT_ID = (SELECT DEPARTMENT_ID 
          FROM DEPARTMENTS 
          WHERE UPPER(DEPARTMENT_NAME) = 'SALES') 
OR   TO_CHAR(HIRE_DATE,'YYYY')<=TO_CHAR(SYSDATE,'YYYY')-10 
OR   SALARY > (SELECT AVG(SALARY) FROM EMPLOYEES E2 WHERE E2.DEPARTMENT_ID = E.DEPARTMENT_ID); 
Смежные вопросы