Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
SQL, PL/SQL, T-SQL: запросы, DML DDL операторы, пакеты, процедуры, функции, триггеры и последовательности.
  • Страница:
  • 1
  • 2

ТЕМА:

Погите с написанием запроса. 12 года 3 мес. назад #3688

  • Zuma
  • Zuma аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Спасибо получено: 0
Есть таблица EMPLOYEES ( DEPARTMENT_ID, LAST_NAME, SALARY ).
Нужно: Вывести фамилии сотрудников, их зарплату и неплотный ранг зарплаты в пределах отдела, в котором работает сотрудник.

SELECT LAST_NAME, SALARY, ROW_NUMBER () OVER (PARTITION BY DEPARTMENT_ID ORDER BY SALARY) FROM EMPLOYEES;

нужен такой вариант этого запроса, только через rownum, count, group by, having, вложенный select или через операторы SET или Join.

Мне в голову пришло только это
WITH DEPTS AS (SELECT DISTINCT DEPARTMENT_ID
FROM EMPLOYEES
WHERE DEPARTMENT_ID IS NOT NULL)


SELECT DEPARTMENT_ID, lAST_NAME, SALARY
FROM (SELECT DEPARTMENT_ID, LAST_NAME, SALARY 
FROM EMPLOYEES) OUTER
WHERE DEPARTMENT_ID = (SELECT * 
FROM DEPTS
WHERE DEPARTMENT_ID = OUTER.DEPARTMENT_ID)
ORDER BY DEPARTMENT_ID, SALARY DESC;

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Погите с написанием запроса. 12 года 3 мес. назад #3689

select  deptno,
        ename,
        sal,
        rank() over(partition by deptno order by sal desc) salary_rank_analytic,
        (select nvl(count(*),0) + 1 from emp e2 where e2.deptno = e1.deptno and e2.sal > e1.sal) salary_rank_subquery
  from  emp e1
  order by deptno,
           salary_rank_subquery
/

    DEPTNO ENAME             SAL SALARY_RANK_ANALYTIC SALARY_RANK_SUBQUERY
---------- ---------- ---------- -------------------- --------------------
        10 KING             5000                    1                    1
        10 CLARK            2450                    2                    2
        10 MILLER           1300                    3                    3
        20 SCOTT            3000                    1                    1
        20 FORD             3000                    1                    1
        20 JONES            2975                    3                    3
        20 SMITH             800                    4                    4
        20 ADAMS             800                    4                    4
        30 ALLEN            1500                    1                    1
        30 BLAKE            1500                    1                    1
        30 TURNER           1500                    1                    1

    DEPTNO ENAME             SAL SALARY_RANK_ANALYTIC SALARY_RANK_SUBQUERY
---------- ---------- ---------- -------------------- --------------------
        30 JAMES            1250                    4                    4
        30 MARTIN           1250                    4                    4
        30 WARD             1250                    4                    4

14 rows selected.

SQL>

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Погите с написанием запроса. 12 года 3 мес. назад #3690

  • Zuma
  • Zuma аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Спасибо получено: 0
Спасибо, но не то. Нужен запрос без аналитических функций. Разрешенный максимум это rownum=

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Погите с написанием запроса. 12 года 3 мес. назад #3691

Это не аналитические, а оконные функции. Поиск в помощь

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Погите с написанием запроса. 12 года 3 мес. назад #3692

Сам-то понял, что сказал?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Погите с написанием запроса. 12 года 3 мес. назад #3693

  • Zuma
  • Zuma аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Спасибо получено: 0

Piston пишет: Это не аналитические, а оконные функции. Поиск в помощь

Не понял:)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
Время создания страницы: 0.209 секунд