Запитання на співбесіді SQL 8/30: Визначення співробітників з найвищими 10% зарплатами

Розуміння задачі

Дано таблицю з даними співробітників, потрібно визначити співробітників, чії зарплати входять до топ-10% серед усіх зарплат.

Приклад таблиці: Salary

pic

Найпростіший і найефективніший спосіб знайти співробітників з зарплатами, що належать до топ-10%, — це використати CTE для віконної функції PERCENT_RANK().

pic

Дозвольте пояснити це більш детально.

PERCENT_RANK():

  • Обчислює відносний ранг зарплати кожного співробітника в наборі даних. (Наприклад: 0.1, 0.2 і т.д.)
  • Ранги варіюються від 0 (найнижча зарплата) до 1 (найвища зарплата).

ORDER BY salary DESC:

  • Забезпечує, що найвищі зарплати будуть оцінені першими.

Фільтрація за допомогою percent_rank <= 0.1:

  • Вибирає співробітників, чії зарплати входять до топ-10% в наборі даних.

Розповсюджені варіанти цього запитання

Топ-10% в кожному відділі:

  • Додайте PARTITION BY department до OVER віконної функції.

Співробітники з найнижчими 10% зарплатами:

  • Змініть ORDER BY salary DESC на ORDER BY salary ASC у віконній функції.

Спробуйте виконати ці запити на своїх даних і не пропустіть наступне SQL запитання 9/30 завтра!

Перекладено з: SQL Interview Question 8/30: Finding the Top 10% Salaried Employees

Leave a Reply

Your email address will not be published. Required fields are marked *