как получить вторую по величине зарплату в отделе, если вторая по величине зарплата недоступна, а затем показать первую самую высокую зарплату? - PullRequest
0 голосов
/ 02 апреля 2020

как найти второй по величине отдел зарплаты, если в отделе только одна зарплата, а затем отобразить эту первую самую высокую зарплату. ввод как

dept_id salary
10      500      
10      600
10      1000
20      800
20      900
20      200
30      1200

вывод

dept_id salary
10      600
20      800
30      1200

1 Ответ

0 голосов
/ 02 апреля 2020

Вы можете использовать оконные функции:

select dept_id, salary
from (
    select
        t.*,
        row_number() over(partition by dept_id order by salary desc) rn,
        count(*) over(partition by dept_id) cnt
    from mytable t
) t
where rn = 2 or (rn = 1 and cnt = 1)

Подзапрос оценивает записи, имеющие один и тот же отдел, путем уменьшения зарплаты, и подсчитывает, сколько сотрудников имеет каждый отдел. Затем вы можете использовать эту информацию для фильтрации во внешнем запросе.

...