В настоящее время я использую приведенный ниже запрос, чтобы получить сумму бонуса для сотрудников за предыдущий год. Но я сталкиваюсь с некоторыми проблемами, поэтому я пытаюсь получить последнее значение записи элемента (значение экранной записи) для элемента «бонус xyz» с помощью функции RANK (). Пожалуйста помоги. Благодарю.
Select
Pam.assignment_number,
Peev.screen_entry_value as bonus_amount
From
Per_all_assignments_m Pam,
Pay_element_entries_f peef,
Pay_element_types_tl petl,
Pay_element_entry_values_f peev
Where
Pam.Person_id=peef.person_id
and peef.element_type_id = petl. element_type_id
And peef.element_entry_id = peev. element_entry_id
And petl.language=‘US’
And to_char(peef.effective_start_date,’yyyy’)=(to_char(sysdate,’yyyy’)-1)
And to_char(peev.effective_start_date,’yyyy’)=(to_char(sysdate,’yyyy’)-1)
And petl.element_name = ‘xyz bonus’
Всего 1 ответ
Поскольку у меня нет ваших таблиц, я использую образец таблицы EMP Скотта.
Там строки, отсортированные по зарплате на отдел, выглядят так:
SQL> select deptno,
2 ename,
3 sal,
4 rank() over (partition by deptno order by sal desc) rn
5 from emp
6 order by deptno,
7 sal desc;
DEPTNO ENAME SAL RN
---------- ---------- ---------- ----------
10 KING 10000 1
10 CLARK 2450 2
10 MILLER 1300 3
20 SCOTT 3000 1
20 FORD 3000 1
20 JONES 2975 3
20 ADAMS 1100 4
20 SMITH 920 5
30 BLAKE 2850 1
30 ALLEN 1600 2
30 TURNER 1500 3
30 MARTIN 1250 4
30 WARD 1250 4
30 JAMES 950 6
14 rows selected.
SQL>
Если вы хотите получить самую высокую зарплату по отделу, вы бы тогда
SQL> select deptno, ename, sal
2 from (select deptno,
3 ename,
4 sal,
5 rank() over (partition by deptno order by sal desc) rn
6 from emp
7 )
8 where rn = 1;
DEPTNO ENAME SAL
---------- ---------- ----------
10 KING 10000
20 SCOTT 3000
20 FORD 3000
30 BLAKE 2850
SQL>
Я думаю, это то, что вы ищете.
Ваш запрос может выглядеть так:
Select
Pam.assignment_number,
Peev.screen_entry_value as bonus_amount,
rank() over (partition by pam.assignment_number order by peev.screen_entry_value desc) rn
From
...
Теперь используйте его в качестве встроенного представления (или CTE) и извлекайте нужные значения.
Если это не то, что вы ищете, пожалуйста, опубликуйте пример данных и желаемый результат.