Функцията SQL Max() е агрегатна функция в SQL. Тази функция връща стойностите, които са по-големи в условието. Условието може да е число или може да е низов израз.
Синтаксисът за функцията select max:
SELECT MAX(column_name) FROM table_name WHERE conditions;
Нека се потопим дълбоко в SQL SELECT MAX.
Помислете за вече съществуващите таблици, които имат следните данни:
Име на таблицата:Служители
ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ | FIRST_NAME | LAST_NAME | ЗАПЛАТА | ГРАД | ОТДЕЛ | MANAGERID |
1001 | VAIBHAVI | МИШРА | 65500 | ПУНА | ORACLE | 1 |
1002 | VAIBHAV | ШАРМА | 60 000 | NOIDA | C# | 5 |
1003 | НИХИЛ | VANI | 50500 | ДЖАЙПУР | FMW | 2 |
2001 | PRACHI | ШАРМА | 55500 | ЧАНДИГАР | ORACLE | 1 |
2002 | BHAVESH | ДЖЕЙН | 65500 | ПУНА | FMW | 2 |
2003 | РУЧИКА | ДЖЕЙН | 50 000 | МУМБАЙ | C# | 5 |
3001 | PRANOTI | ШЕНДЕ | 55500 | ПУНА | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | ДЖАЙПУР | FMW | 2 |
3003 | DEEPAM | ДЖАУХАРИ | 58500 | МУМБАЙ | JAVA | 3 |
4001 | РАДЖЕШ | GOUD | 60500 | МУМБАЙ | ТЕСТВАНЕ | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | РУЧИКА | AGARWAL | 60 000 | ДЕЛХИ | ORACLE | 1 |
5001 | АРХИТ | ШАРМА | 55500 | ДЕЛХИ | ТЕСТВАНЕ | 4 |
Пример 1: Изпълнете заявка, която търси максималната заплата на служителите от таблицата на служителите.
SELECT MAX (SALARY) AS 'MAXSALARY' FROM EMPLOYEES;
В горната заявка намираме максималната заплата от цялата таблица на служителите. Нарекли сме функцията Макс (заплата) като максимална заплата. Заплатата ще се покаже като име на колоната, когато изходът се върне.
Изход:
МАКС. ЗАПЛАТА |
65500 |
Както можете да видите, максималната заплата е 65500 от таблицата на служителите
Пример 2: Изпълнете заявка за търсене на максималната заплата на служителите, чийто град е Мумбай, от таблицата на служителите.
SELECT CITY, MAX(SALARY) AS 'SALARY' FROM EMPLOYEES WHERE CITY = 'MUMBAI';
Назовахме max (заплата) като заплата в горната заявка, която се показва като име на колона, когато се връща изходът. Намерихме максималната заплата на служител в Мумбай и показахме името на града.
Изход:
ГРАД | ЗАПЛАТА |
МУМБАЙ | 60500 |
Както можете да видите, максималната заплата на служител, който пребивава в град Мумбай, е 60500
Пример 3: Напишете заявка, за да намерите максималната заплата на служителите от таблицата на служителите на служителите, чийто отдел е Java.
SELECT DEPARTMENT, MAX(SALARY) AS 'MAXIMUM_SALARY' FROM EMPLOYEES WHERE DEPARTMENT = 'JAVA';
В горната заявка сме поставили псевдоним max (заплата) като максимална_заплата, изведена като име на колона, когато се връща изходът. Намерихме максималната заплата на служител, чийто отдел е Java и показахме името на отдела.
Изход:
ОТДЕЛ | MAXIMUM_SALARY |
JAVA | 58500 |
Както можете да видите, максималната заплата на служител от отдел Java е 58500
Пример 4: Напишете заявка, за да намерите максималната заплата на служителите, чийто отдел включва един от списъците е Oracle и FMW от таблицата на служителите.
SELECT MAX(SALARY) AS 'SALARY' FROM EMPLOYEES WHERE DEPARTMENT IN ('ORACLE', 'FMW');
Имаме псевдоним max (заплата) в горната заявка, която се показва като име на колона, когато се връща изходът. Намерихме максималната заплата на служител, чийто отдел е Oracle и FMW.
Изход:
ЗАПЛАТА |
65500 |
Пример 5: Изпълнете заявка за търсене на максималната заплата на служителите, чиято заплата е по-голяма от 55 000 и градът включва Нойда, Делхи от таблицата на служителите група по град.
SELECT CITY, MAX(SALARY) AS EMPLOYEE_SALARY FROM EMPLOYEES WHERE SALARY > 55000 AND CITY IN ('NOIDA', 'DELHI') GROUP BY CITY;
Назовахме Max (заплата) като EMPLOYEE_SALARY в горната заявка, която се показва като име на колона, когато се връща изходът. Намерихме максималната заплата на служител, чиято заплата е по-голяма от 55000. Освен това градът на служителя трябва да е едно от имената, включени в параметъра city IN. Използвахме и клаузата GROUP BY, последвана от колоната за град. Градът в Нойда ще бъде групиран в един град на всички служители, чийто град в Нойда и установена заплата на служителите, като същият подход се използва за град Делхи.
Изход:
ГРАД | РАБОТА_ЗАПЛАТА |
ДЕЛХИ | 60 000 |
NOIDA | 60 000 |
Служителят пребивава в град Делхи, максималната заплата е 60 000, а служителят пребивава в град Нойда, максималната заплата е 60 000.
Пример 6: Изпълнете заявка за търсене на максимална заплата на служителите от таблицата на служителите, градовете са уникални за група служители по отдел.
SELECT CITY, MAX(DISTINCT SALARY) AS 'EMPLOYEE_SALARY' FROM EMPLOYEES GROUP BY DEPARTMENT;
Назовахме max (DISTINCT заплата) като Employee_salary в горната заявка, която се показва като име на колона, когато се връща изходът. Намерихме максималната заплата на служителите от таблицата на служителите, като се имат предвид отделните градове в колона група по отдели.
Изход:
ОТДЕЛ | РАБОТА_ЗАПЛАТА |
NOIDA | 60 000 |
ДЖАЙПУР | 65500 |
ПУНА | 58500 |
ПУНА | 65500 |
МУМБАЙ | 60500 |
Пример 7: Напишете заявка, за да намерите максималната заплата на служителите от таблицата на служителите, уникален отдел на група служители по отдел.
SELECT DEPARTMENT, MAX(DISTINCT SALARY) AS 'EMPLOYEE_SALARY' FROM EMPLOYEES GROUP BY DEPARTMENT;
В горната заявка сме присвоили псевдонима max (DISTINCT заплата) като Employee_salary, показан като име на колона, когато се връща изходът. Намерихме максималната заплата на служителите от таблицата на служителите, като се имат предвид отделните отдели, групирани по колона на отделите.
Изход:
ОТДЕЛ | РАБОТА_ЗАПЛАТА |
C# | 60 000 |
FMW | 65500 |
JAVA | 58500 |
ORACLE | 65500 |
ТЕСТВАНЕ | 60500 |
Пример 8: Изпълнете заявка за търсене на максималната заплата на служителя от групата таблици на служителя по отдел, където max() заплатата е по-голяма от 55000.
SELECT CITY, MAX(SALARY) AS SALARY FROM EMPLOYEES GROUP BY DEPARTMENT HAVING MAX(SALARY) > 55000;
Назовахме max (заплата) като заплата в горната заявка, която се показва като име на колона, когато се връща изходът. Открихме максималната заплата на служителите от таблицата на служителите, последвана от група по име на отдел и използвахме условие, при което max() е по-голямо от 55 000.
Изход:
ОТДЕЛ | РАБОТА_ЗАПЛАТА |
NOIDA | 60 000 |
ДЖАЙПУР | 65500 |
ПУНА | 58500 |
ПУНА | 65500 |
МУМБАЙ | 60500 |
Както виждаме, само градовете с общи заплати са по-големи от 55 000. Да имаш клауза е като клауза Къде. Наличието на клауза се използва, когато искаме да приложим някакво условие към агрегатната функция. Използвахме клауза за наличие само когато използвахме агрегатна функция в заявката.
Пример 9: Напишете заявка, за да намерите максималната заплата на служител с група лаптопи от отдела.
SELECT DEPARTMENT, MAX(SALARY) AS SALARY FROM EMPLOYEES WHERE EMPLOYEEID IN (SELECT EMPLOYEEID FROM LAPTOP) GROUP BY DEPARTMENT;
Назовахме max (заплата) като заплата в горната заявка, която се показва като име на колона, когато се връща изходът. Обяснение на горната заявка, Първата подзаявка ще бъде изпълнена (ИЗБЕРЕТЕ ИД НА СЛУЖИТЕЛ ОТ ЛАПТОПА); в резултат на това ще получим идентификаторите на служителите, включително нулевата стойност. След като подзаявката бъде изпълнена, основната заявка ще бъде изпълнена SELECT DEPARTMENT, MAX(SALARY) AS SALARY FROM EMPLOYEES WHERE EMPLOYEEID IN (изход на подзаявка). В оператора IN на основната заявка има идентификатор на служител, който се извежда от подзаявката според IN оператора. Ще получим нашия краен резултат, който е групата по име на отдел.
Изход:
ОТДЕЛ | ЗАПЛАТА |
C# | 60 000 |
JAVA | 58500 |
ORACLE | 60 000 |
ТЕСТВАНЕ | 55500 |