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