Sobes.tech
Senior
38

Сұрақ 9. Өз позициясындағы ең жоғары жалақы алатын қызметкерлерді қайтаратын сұрау жазыңыз. Бастапқы скрипт: CREATE TABLE users ( fio TEXT NOT NULL, position TEXT, salary BIGINT NOT NULL ); INSERT INTO users(fio, position, salary) VALUES ('Иванов', 'Тестировщик', 100000), ('Горохов', 'Тестировщик', 120000), ('Петров', 'Тестировщик', 140000), ('Сидоров', 'Тестировщик', 100000), ('Кузнецов', 'Тестировщик', 120000), ('Михайлов', 'Тестировщик', 150000), ('Антонов', 'Разработчик', 200000), ('Сухой', 'Разработчик', 100000), ('Микоян', 'Разработчик', 100000), ('Капустин', 'Директор', 300000), ('Астахов', 'ИБ', 200000); Мысал нәтижесі: Михайлов Тестировщик 150000 Антонов Разработчик 200000 Капустин Директор 300000 Астахов ИБ 200000

Сұралған компаниялар
RT Labs

AI-дан жауап

sobes.tech AI

Әр лауазым бойынша ең жоғары жалақысы бар қызметкерлерді алу үшін терезе функциясы RANK() немесе топтастырумен қосалқы сұрауды қолдануға болады. Міне, қосалқы сұрауды пайдалану мысалы:

SELECT u.fio, u.position, u.salary
FROM users u
JOIN (
    SELECT position, MAX(salary) AS max_salary
    FROM users
    GROUP BY position
) max_salaries ON u.position = max_salaries.position AND u.salary = max_salaries.max_salary;

Бұл сұрау алдымен әр лауазым бойынша ең жоғары жалақыны табады, содан кейін олардың жалақысы өз лауазымындағы ең жоғары жалақыға тең барлық қызметкерлерді таңдайды.

Нәтиже:

Михайлов Тестировщик 150000
Антонов Разработчик 200000
Капустин Директор 300000
Астахов ИБ 200000