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

MIN() – Temukan Nilai Minimum dalam Kolom di MySQL

The MySQL MIN() function adalah fungsi agregat yang mengembalikan nilai minimum 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 minimum dari baris yang dikembalikan. Jika tidak ada baris yang cocok, MIN() mengembalikan NULL .

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

Sintaks

Sintaks MIN() seperti ini:

MIN([DISTINCT] expr) [over_clause]

Dimana expr adalah ekspresi yang Anda inginkan nilai minimumnya.

 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 MIN() berfungsi untuk mencari kota dengan jumlah penduduk terkecil (yaitu baris dengan nilai terkecil pada kolom penduduknya).

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

Hasil:

+---------------+
| Minimum Value |
+---------------+
|         94100 |
+---------------+

GROUP BY Clause

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

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

Hasil:

+-----------------+---------------+
| District        | Minimum Value |
+-----------------+---------------+
| New South Wales |        219761 |
| Victoria        |        125382 |
| Queensland      |         92273 |
| 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, MIN(Population) AS 'Minimum Value'
FROM City
WHERE CountryCode = 'AUS'
GROUP BY District
ORDER BY `Minimum Value` ASC;

Hasil:

+-----------------+---------------+
| District        | Minimum Value |
+-----------------+---------------+
| Queensland      |         92273 |
| Victoria        |        125382 |
| Tasmania        |        126118 |
| New South Wales |        219761 |
| Capital Region  |        322723 |
| South Australia |        978100 |
| West Australia  |       1096829 |
+-----------------+---------------+

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

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

Temukan Panjang Karakter Minimum

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

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

SELECT MIN(CHAR_LENGTH(Name)) AS 'Minimum Character Length'
FROM city;

Hasil:

+--------------------------+
| Minimum Character Length |
+--------------------------+
|                        3 |
+--------------------------+

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

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

Hasil:

+------+------------------+
| Name | Character Length |
+------+------------------+
| Ome  |                3 |
| Yao  |                3 |
| Qom  |                3 |
| Itu  |                3 |
| Tsu  |                3 |
| Ube  |                3 |
| Ise  |                3 |
| Uji  |                3 |
| Ede  |                3 |
| Ota  |                3 |
+------+------------------+

Melihat beberapa kota memiliki panjang karakter yang sama, kita dapat menyesuaikan kueri ini untuk mengembalikan hanya nilai yang berbeda:

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

Hasil:

+------------------+
| Character Length |
+------------------+
|                3 |
|                4 |
|                5 |
|                6 |
|                7 |
|                8 |
|                9 |
|               10 |
|               11 |
|               12 |
+------------------+

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',
    MIN(Population) OVER(PARTITION BY District) AS 'District Minimum'
FROM City
WHERE CountryCode = 'AUS'
ORDER BY `District Minimum` DESC;

Hasil:

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

Contoh ini mempartisi baris dengan District , memberikan nilai minimum untuk setiap partisi (distrik). Ini memungkinkan Anda melihat data yang lebih terperinci, seperti populasi setiap kota, bersama dengan populasi kota terkecil (menurut populasi) 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. Cara membuat skrip login yang aman di PHP dan MySQL

  2. Pemeriksaan Kesehatan Penting untuk Server Replika Sumber MySQL Anda

  3. CHAR() Contoh di MySQL

  4. Kesalahan MySQL #1071 - Kunci yang ditentukan terlalu panjang; panjang kunci maksimal adalah 767 byte

  5. Pilih semua kolom kecuali satu di MySQL?