Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MAX() – Temukan Nilai Maksimum dalam Kolom di MySQL

The MySQL MAX() function adalah fungsi agregat yang mengembalikan nilai maksimum dari sebuah ekspresi.

Biasanya, ekspresi akan berupa rentang nilai yang dikembalikan sebagai baris terpisah dalam kolom, dan Anda dapat menggunakan fungsi ini untuk menemukan nilai maksimum dari baris yang dikembalikan. Jika tidak ada baris yang cocok, MAX() mengembalikan NULL .

Misalnya, Anda dapat menggunakan fungsi ini untuk mengetahui kota mana yang memiliki populasi terbesar dari daftar kota.

Sintaks

Sintaks MAX() seperti ini:

MAX([DISTINCT] expr) [over_clause]

Dimana expr adalah ekspresi yang Anda inginkan nilai maksimumnya.

 over_clause adalah klausa opsional yang bekerja dengan fungsi jendela. Perhatikan bahwa over_clause hanya dapat digunakan jika Anda tidak menggunakan DISTINCT kata kunci.

(opsional) DISTINCT kata kunci dapat digunakan untuk menghilangkan nilai duplikat.

Contoh Dasar

Pertama, inilah data mentah yang akan kita gunakan dalam contoh ini:

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

Hasil:

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

Kita dapat menggunakan MAX() berfungsi untuk mencari kota dengan populasi terbesar (yaitu baris dengan nilai maksimum pada kolom populasinya).

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

Hasil:

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

GROUP BY Clause

Kita dapat menggunakan GROUP BY klausul untuk mencantumkan setiap negara, bersama dengan populasi kota terbesar di negara itu (berdasarkan populasi):

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

Hasil:

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

Klausul ORDER BY

Kami juga dapat menggunakan ORDER BY klausa untuk menentukan kolom yang akan dipesan dengan:

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

Hasil:

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

Ini mengurutkan hasil dalam urutan menaik, yang mencantumkan nilai minimum terlebih dahulu.

Perhatikan bahwa, saat memesan dengan alias multi-kata (seperti `Max Value` ), Anda harus menggunakan karakter backtick (` ) sebagai ganti apostrof (' ) untuk mengelilingi dua kata.

Temukan Panjang Karakter Maksimum

MAX() fungsinya tidak terbatas hanya pada kolom dengan data numerik. Anda juga dapat menggabungkan MAX() dengan fungsi lain untuk mengembalikan nilai maksimum di area lain.

Misalnya, dengan menggunakan data sampel kami, kami dapat menemukan nilai dengan jumlah karakter maksimum di City kolom:

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

Hasil:

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

Kita juga dapat melihat ini dengan menggunakan kueri berikut (yang tidak melibatkan MAX() fungsi):

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

Hasil:

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

Menggunakan Klausa OVER

Seperti disebutkan, sintaks memungkinkan untuk OVER klausa untuk disertakan dalam kueri Anda. Pada dasarnya, OVER klausa memungkinkan Anda untuk menentukan cara mempartisi baris kueri ke dalam grup untuk diproses oleh fungsi jendela.

Ini contohnya:

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;

Hasil:

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

Contoh ini mempartisi baris dengan District , memberikan nilai maksimum untuk setiap partisi (distrik). Ini memungkinkan Anda melihat data yang lebih terperinci, seperti populasi setiap kota, bersama dengan populasi kota terbesar di distrik yang sama.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memahami Kumpulan Karakter dan Kumpulan di MySQL

  2. Django :Tabel tidak ada

  3. Bagaimana cara mengurangi jam dari datetime di MySQL?

  4. Tidak dapat terhubung ke server MySQL lokal melalui soket '/var/lib/mysql/mysql.sock' (2)

  5. Memeriksa tabel untuk tumpang tindih waktu?