ORACLE - SQL-запрос для получения сотрудников, зарплата которых была увеличена за последние 6 месяцев - PullRequest
0 голосов
/ 11 мая 2018

Таблица, о которой идет речь, имеет следующую структуру:

Dec (1) | Jan (2) | Feb (3) | Mar (4) | Apr (5) | May (6) | Employee-ID | Amount

Мне нужен запрос для получения записей о тех сотрудниках, зарплата которых была увеличена в течение последних 6 месяцев.

ПРИМЕЧАНИЕ К ОП : Вы написали, что это нужно сделать с помощью аналитической функции .И неясно, где потребность в какой-либо аналитической функции.Запрос, который разрешает ваш вопрос, очень прост.

1 Ответ

0 голосов
/ 11 мая 2018

Не могли бы вы попробовать запрос ниже:

select customer_id 
from (
select customer_id , min(salary - previous_month_salary) salary_diff
from (
select customer_id , amount  as salary, months
,lag(amount,1,0) over (partition by customer_id order by months asc) as 'previous_month_salary'
from customer where months >= add_months(sysdate, -6)
)  t1 group by customer_id
)  t2 where salary_diff >0

Подзапрос t1 извлекает зарплату за предыдущий месяц (значение по умолчанию 0) каждого клиента

Подзапрос t2 вычисляет разницу в зарплате за предыдущий месяцтогда минимальная разница в заработной плате.

Клиенты, у которых ежемесячно увеличивалась заработная плата, должны иметь минимальную разницу в заработной плате, превышающую 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...