Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MAX () - Tìm Giá trị Tối đa trong một Cột trong MySQL

MySQL MAX() hàm là một hàm tổng hợp trả về giá trị lớn nhất từ ​​một biểu thức.

Thông thường, biểu thức sẽ là một dải giá trị được trả về dưới dạng các hàng riêng biệt trong một cột và bạn có thể sử dụng hàm này để tìm giá trị lớn nhất từ ​​các hàng được trả về. Nếu không có hàng nào phù hợp, MAX() trả về NULL .

Ví dụ:bạn có thể sử dụng chức năng này để tìm ra thành phố nào có dân số đông nhất trong danh sách các thành phố.

Cú pháp

Cú pháp của MAX() như sau:

MAX([DISTINCT] expr) [over_clause]

Ở đâu expr là biểu thức mà bạn muốn có giá trị lớn nhất.

over_clause là một mệnh đề tùy chọn hoạt động với các chức năng cửa sổ. Lưu ý rằng over_clause chỉ có thể được sử dụng nếu bạn không sử dụng DISTINCT từ khóa.

(Tùy chọn) DISTINCT từ khóa có thể được sử dụng để loại bỏ các giá trị trùng lặp.

Ví dụ cơ bản

Đầu tiên, đây là dữ liệu thô mà chúng tôi sẽ sử dụng trong ví dụ này:

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

Kết quả:

+-------------------+------------+
| 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 |
+-------------------+------------+

Chúng ta có thể sử dụng MAX() hàm để tìm thành phố có dân số lớn nhất (tức là hàng có giá trị lớn nhất trong cột dân số của nó).

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

Kết quả:

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

Mệnh đề GROUP BY

Chúng ta có thể sử dụng GROUP BY mệnh đề liệt kê từng quốc gia, cùng với dân số của thành phố lớn nhất của quốc gia đó (theo dân số):

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

Kết quả:

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

Mệnh đề ORDER BY

Chúng tôi cũng có thể sử dụng ORDER BY mệnh đề để chỉ định một cột để sắp xếp theo:

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

Kết quả:

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

Điều này sắp xếp các kết quả theo thứ tự tăng dần, trong đó liệt kê giá trị nhỏ nhất trước tiên.

Lưu ý rằng, khi đặt hàng theo bí danh nhiều từ (như `Max Value` ), bạn cần sử dụng ký tự hình nền (` ) thay vì dấu nháy đơn (' ) để bao quanh hai từ.

Tìm độ dài ký tự tối đa

MAX() hàm không chỉ giới hạn ở các cột có dữ liệu số. Bạn cũng có thể kết hợp MAX() với các chức năng khác để trả về giá trị lớn nhất trong các khu vực khác.

Ví dụ:sử dụng dữ liệu mẫu của chúng tôi, chúng tôi có thể tìm thấy giá trị có số ký tự tối đa trong City cột:

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

Kết quả:

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

Chúng tôi cũng có thể thấy điều này bằng cách sử dụng truy vấn sau (không liên quan đến MAX() chức năng):

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

Kết quả:

+--------------------------------------+------------------+
| 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 |
+--------------------------------------+------------------+

Sử dụng mệnh đề OVER

Như đã đề cập, cú pháp cho phép OVER mệnh đề được bao gồm trong các truy vấn của bạn. Về cơ bản, OVER mệnh đề cho phép bạn chỉ định cách phân chia các hàng truy vấn thành các nhóm để xử lý bởi hàm cửa sổ.

Đây là một ví dụ:

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;

Kết quả:

+-----------------+---------------+-----------------+--------------+
| 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 |
+-----------------+---------------+-----------------+--------------+

Ví dụ này phân vùng các hàng theo District , cung cấp giá trị lớn nhất cho mỗi phân vùng (quận). Điều này cho phép bạn xem dữ liệu chi tiết hơn, chẳng hạn như dân số của từng thành phố, cùng với dân số của thành phố lớn nhất trong cùng một quận.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng Bí danh trong Tính toán SQL

  2. Tạo ứng dụng web từ Scratch bằng Python Flask và MySQL:Phần 3

  3. Giám sát cơ sở dữ liệu - Khắc phục sự cố Prometheus với SCUMM Dashboards

  4. mysqli_stmt ::bind_param ():Số phần tử trong chuỗi định nghĩa kiểu không khớp với số biến ràng buộc

  5. MySQL COUNT DISTINCT