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

MAX()–MySQLの列の最大値を見つける

    MySQL MAX() functionは、式から最大値を返す集計関数です。

    通常、式は列内の個別の行として返される値の範囲であり、この関数を使用して、返された行から最大値を見つけることができます。一致する行がない場合は、MAX() NULLを返します 。

    たとえば、この関数を使用して、都市のリストから人口が最も多い都市を見つけることができます。

    構文

    MAX()の構文 このようになります:

    MAX([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 |
    +-------------------+------------+

    MAX()を使用できます 人口が最大の都市(つまり、人口列の値が最大の行)を検索する関数。

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

    結果:

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

    GROUPBY句

    GROUP BYを使用できます その国の最大の都市の人口(人口別)とともに、各国をリストする条項:

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

    結果:

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

    ORDERBY句

    ORDER BYを使用することもできます 順序付けする列を指定する句:

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

    結果:

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

    これにより、結果が昇順で並べ替えられ、最小値が最初に表示されます。

    マルチワードエイリアス(`Max Value`など)で注文する場合は注意してください )、バッククォート文字(`)を使用する必要があります )アポストロフィの代わりに(' )2つの単語を囲みます。

    最大文字長を見つける

    MAX() 関数は、数値データを含む列だけに限定されません。 MAX()を組み合わせることもできます 他の領域で最大値を返すために他の関数を使用します。

    たとえば、サンプルデータを使用すると、Cityで最大文字数の値を見つけることができます。 列:

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

    結果:

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

    これは、次のクエリ(MAX()を含まない)を使用して確認することもできます。 関数):

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

    結果:

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

    OVER句の使用

    前述のように、構文ではOVERが可能です。 クエリに含まれる句。基本的に、OVER 句を使用すると、ウィンドウ関数で処理するためにクエリ行をグループに分割する方法を指定できます。

    次に例を示します:

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

    結果:

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

    この例では、行をDistrictで分割します 、各パーティション(地区)の最大値を提供します。これにより、各都市の人口や、同じ地区の最大の都市の人口など、より詳細なデータを表示できます。


    1. SQL ServerでのACOS()の例

    2. SQL Serverで特定の文字のUnicode値を返す方法– UNICODE()

    3. 一貫性のないMySQLスレーブを再構築する方法は?

    4. PDO mysql:挿入が成功したかどうかを知る方法