MySQL MIN()
functionは、式から最小値を返す集計関数です。
通常、式は列内の個別の行として返される値の範囲であり、この関数を使用して、返された行から最小値を見つけることができます。一致する行がない場合は、MIN()
NULL
を返します 。
たとえば、この関数を使用して、都市のリストから人口が最も少ない都市を見つけることができます。
構文
MIN()
の構文 このようになります:
MIN([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 | +-------------------+------------+
MIN()
を使用できます 人口が最も少ない都市(つまり、人口列の値が最も小さい行)を検索する関数。
USE world; SELECT MIN(Population) AS 'Minimum Value' FROM City WHERE CountryCode = 'THA';
結果:
+---------------+ | Minimum Value | +---------------+ | 94100 | +---------------+
GROUPBY句
GROUP BY
を使用できます 各地区を、その地区の最小都市の人口(人口別)とともに一覧表示する条項:
USE world; SELECT District, MIN(Population) AS 'Minimum Value' FROM City WHERE CountryCode = 'AUS' GROUP BY District;
結果:
+-----------------+---------------+ | District | Minimum Value | +-----------------+---------------+ | New South Wales | 219761 | | Victoria | 125382 | | Queensland | 92273 | | West Australia | 1096829 | | South Australia | 978100 | | Capital Region | 322723 | | Tasmania | 126118 | +-----------------+---------------+
ORDERBY句
ORDER BY
を使用することもできます 順序付けする列を指定する句:
USE world; SELECT District, MIN(Population) AS 'Minimum Value' FROM City WHERE CountryCode = 'AUS' GROUP BY District ORDER BY `Minimum Value` ASC;
結果:
+-----------------+---------------+ | District | Minimum Value | +-----------------+---------------+ | Queensland | 92273 | | Victoria | 125382 | | Tasmania | 126118 | | New South Wales | 219761 | | Capital Region | 322723 | | South Australia | 978100 | | West Australia | 1096829 | +-----------------+---------------+
これにより、結果が昇順で並べ替えられ、最小値が最初に表示されます。
マルチワードエイリアス(`Minimum Value`
など)で注文する場合は注意してください )、バッククォート文字(`
)を使用する必要があります )アポストロフィの代わりに('
)2つの単語を囲みます。
最小文字長を見つける
MIN()
関数は、数値データを含む列だけに限定されません。 MIN()
を組み合わせることもできます 他の領域で最小値を返す他の関数を使用します。
たとえば、サンプルデータを使用すると、City
で最小文字数の値を見つけることができます。 列:
SELECT MIN(CHAR_LENGTH(Name)) AS 'Minimum Character Length' FROM city;
結果:
+--------------------------+ | Minimum Character Length | +--------------------------+ | 3 | +--------------------------+
これは、次のクエリ(MIN()
を含まない)を使用して確認することもできます。 関数):
SELECT Name, CHAR_LENGTH(Name) AS 'Character Length' FROM city ORDER BY `Character Length` LIMIT 10;
結果:
+------+------------------+ | Name | Character Length | +------+------------------+ | Ome | 3 | | Yao | 3 | | Qom | 3 | | Itu | 3 | | Tsu | 3 | | Ube | 3 | | Ise | 3 | | Uji | 3 | | Ede | 3 | | Ota | 3 | +------+------------------+
複数の都市の文字の長さが同じであるため、このクエリを調整して、個別の値のみを返すことができます。
SELECT DISTINCT CHAR_LENGTH(Name) AS 'Character Length' FROM city ORDER BY `Character Length` LIMIT 10;
結果:
+------------------+ | Character Length | +------------------+ | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | | 11 | | 12 | +------------------+
OVER句の使用
前述のように、構文ではOVER
が可能です。 クエリに含まれる句。基本的に、OVER
句を使用すると、ウィンドウ関数で処理するためにクエリ行をグループに分割する方法を指定できます。
次に例を示します:
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;>
結果:
+-----------------+---------------+-----------------+------------------+ | 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 | +-----------------+---------------+-----------------+------------------+
この例では、行をDistrict
で分割します 、各パーティション(地区)の最小値を提供します。これにより、各都市の人口や、同じ地区内の最小の都市の人口(人口別)など、より詳細なデータを表示できます。