Mysql
 sql >> база данни >  >> RDS >> Mysql

MAX() – Намерете максималната стойност в колона в MySQL

 MySQL MAX() функцията е агрегатна функция, която връща максималната стойност от израз.

Обикновено изразът ще бъде диапазон от стойности, върнати като отделни редове в колона, и можете да използвате тази функция, за да намерите максималната стойност от върнатите редове. Ако няма съвпадащи редове, MAX() връща NULL .

Например, можете да използвате тази функция, за да разберете кой град има най-голямо население от списък с градове.

Синтаксис

Синтаксисът на MAX() става така:

MAX([DISTINCT] expr) [over_clause]

Където expr е изразът, за който искате максималната стойност.

 over_clause е незадължителна клауза, която работи с функциите на прозореца. Обърнете внимание, че over_clause може да се използва само ако не използвате DISTINCT ключова дума.

(по избор) DISTINCT ключова дума може да се използва за премахване на дублиращи се стойности.

Основен пример

Първо, ето необработените данни, които ще използваме в този пример:

USE world;
SELECT Name, Population
FROM City
WHERE CountryCode = 'THA';

Резултат:

+-------------------+------------+
| Name              | Population |
+-------------------+------------+
| Bangkok           |    6320174 |
| Nonthaburi        |     292100 |
| Nakhon Ratchasima |     181400 |
| Chiang Mai        |     171100 |
| Udon Thani        |     158100 |
| Hat Yai           |     148632 |
| Khon Kaen         |     126500 |
| Pak Kret          |     126055 |
| Nakhon Sawan      |     123800 |
| Ubon Ratchathani  |     116300 |
| Songkhla          |      94900 |
| Nakhon Pathom     |      94100 |
+-------------------+------------+

Можем да използваме MAX() функция за намиране на града с най-голямо население (т.е. реда с максимална стойност в неговата колона за населението).

USE world;
SELECT MAX(Population) AS 'Maximum Value'
FROM City
WHERE CountryCode = 'THA';

Резултат:

+---------------+
| Maximum Value |
+---------------+
|       6320174 |
+---------------+

Клаузата GROUP BY

Можем да използваме GROUP BY клауза за изброяване на всяка държава, заедно с населението на най-големия град в тази страна (по население):

USE world;
SELECT District, MAX(Population) AS 'Max Value'
FROM City
WHERE CountryCode = 'AUS'
GROUP BY District;

Резултат:

+-----------------+-----------+
| District        | Max Value |
+-----------------+-----------+
| New South Wales |   3276207 |
| Victoria        |   2865329 |
| Queensland      |   1291117 |
| West Australia  |   1096829 |
| South Australia |    978100 |
| Capital Region  |    322723 |
| Tasmania        |    126118 |
+-----------------+-----------+

Клауза ORDER BY

Можем също да използваме ORDER BY клауза, за да посочите колона, с която да подредите по:

USE world;
SELECT District, MAX(Population) AS 'Max Value'
FROM City
WHERE CountryCode = 'AUS'
GROUP BY District
ORDER BY `Max Value` ASC;

Резултат:

+-----------------+-----------+
| District        | Max Value |
+-----------------+-----------+
| Tasmania        |    126118 |
| Capital Region  |    322723 |
| South Australia |    978100 |
| West Australia  |   1096829 |
| Queensland      |   1291117 |
| Victoria        |   2865329 |
| New South Wales |   3276207 |
+-----------------+-----------+

Това подрежда резултатите във възходящ ред, който изброява първо минималната стойност.

Имайте предвид, че когато поръчвате по псевдоним от няколко думи (като `Max Value` ), трябва да използвате символа за обратна отметка (` ) вместо апострофа (' ), за да обградите двете думи.

Намерете максималната дължина на знака

MAX() функцията не се ограничава само до колони с числови данни. Можете също да комбинирате MAX() с други функции за връщане на максимални стойности в други области.

Например, използвайки нашите примерни данни, можем да намерим стойността с максимален брой знаци в City колона:

SELECT MAX(CHAR_LENGTH(Name)) AS 'Maximum Character Length'
FROM city;

Резултат:

+--------------------------+
| Maximum Character Length |
+--------------------------+
|                       34 |
+--------------------------+

Можем също да видим това, като използваме следната заявка (която не включва MAX() функция):

SELECT Name, CHAR_LENGTH(Name) AS 'Character Length'
FROM city
ORDER BY `Character Length` DESC
LIMIT 10;

Резултат:

+--------------------------------------+------------------+
| Name                                 | Character Length |
+--------------------------------------+------------------+
| Luxembourg [Luxemburg/Lëtzebuerg]   |               34 |
| Castellón de la Plana [Castell      |               31 |
| San Fernando del Valle de Cata       |               30 |
| Santo Domingo de los Colorados       |               30 |
| Thiruvananthapuram (Trivandrum       |               30 |
| [San Cristóbal de] la Laguna        |               29 |
| Ingraj Bazar (English Bazar)         |               28 |
| Soledad de Graciano Sánchez         |               28 |
| Valle de Chalco Solidaridad          |               27 |
| Machilipatnam (Masulipatam)          |               27 |
+--------------------------------------+------------------+

Използване на клауза OVER

Както споменахме, синтаксисът позволява OVER клауза, която да бъде включена във вашите запитвания. По принцип OVER Клаузата ви позволява да укажете как да разделяте редовете на заявка на групи за обработка от функцията прозорец.

Ето един пример:

SELECT 
    District,
    Name AS City,
    Population AS 'City Population',
    MAX(Population) OVER(PARTITION BY District) AS 'District Max'
FROM City
WHERE CountryCode = 'AUS'
ORDER BY `District Max` DESC;
>

Резултат:

+-----------------+---------------+-----------------+--------------+
| District        | City          | City Population | District Max |
+-----------------+---------------+-----------------+--------------+
| New South Wales | Sydney        |         3276207 |      3276207 |
| New South Wales | Wollongong    |          219761 |      3276207 |
| New South Wales | Newcastle     |          270324 |      3276207 |
| New South Wales | Central Coast |          227657 |      3276207 |
| Victoria        | Melbourne     |         2865329 |      2865329 |
| Victoria        | Geelong       |          125382 |      2865329 |
| Queensland      | Townsville    |          109914 |      1291117 |
| Queensland      | Brisbane      |         1291117 |      1291117 |
| Queensland      | Cairns        |           92273 |      1291117 |
| Queensland      | Gold Coast    |          311932 |      1291117 |
| West Australia  | Perth         |         1096829 |      1096829 |
| South Australia | Adelaide      |          978100 |       978100 |
| Capital Region  | Canberra      |          322723 |       322723 |
| Tasmania        | Hobart        |          126118 |       126118 |
+-----------------+---------------+-----------------+--------------+

Този пример разделя редовете по District , предоставяйки максималната стойност за всеки дял (район). Това ви позволява да видите по-подробни данни, като например населението на всеки град, заедно с населението на най-големия град в същия район.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да нулирате Root парола в MySQL 8.0

  2. Как да намерите и замените текст в MySQL база данни с помощта на SQL

  3. Как да поправите MySQL база данни в cPanel

  4. Проверете дали MySQL таблицата съществува, без да използвате избор от синтаксис?

  5. разделяне на ключови думи за post php mysql