sql >> データベース >  >> RDS >> Mysql

MIN()–MySQLの列の最小値を見つける

    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で分割します 、各パーティション(地区)の最小値を提供します。これにより、各都市の人口や、同じ地区内の最小の都市の人口(人口別)など、より詳細なデータを表示できます。


    1. SQLServerイベントをキャプチャして分析する方法

    2. 統計がロックされているテーブルを見つける方法

    3. 奇妙なエラーが発生しました。`WITH`句を使用したSQLServerクエリ

    4. Oracleの数値関数(全リスト)