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

SQLite Max()のしくみ

    SQLite max() 関数は、グループ内のすべての値から最大値を返します。

    最大値は、ORDER BYを使用するクエリで最後に表示される値です。 同じ列の句。

    実例を示します。

    SELECT max(Price) FROM Products;

    結果:

    389.45

    これは、そのテーブルのすべての行を返すクエリです。

    SELECT * FROM Products 
    ORDER BY Price;

    結果:

    ProductId   ProductName  Price     
    ----------  -----------  ----------
    5           Red Widget             
    3           Widget Open  89.27     
    4           Foobar Set   120.0     
    2           Widget Hold  139.5     
    1           Blue Widget  389.45    

    最初の行の価格がNULL値であることに注意してください。 max() 他の行にはNULL以外の値があるため、関数はそれを無視します。すべての行がNULLの場合、max() NULLを返します。

    ORDER BYを使用しました この例の句。前述のように、max() 関数は、この句を使用したときに最後に表示される値を返します(列を昇順で並べ替えると仮定します。これがデフォルトです)。

    明確にするために、同じ結果を得るために以下を使用することもできます。

    SELECT * FROM Products 
    ORDER BY Price ASC;

    Max()とCount()を組み合わせる

    max()を組み合わせた例を次に示します。 count()で関数 最大カウントを返す関数。

    SELECT max(AlbumCount) 
    FROM (SELECT ArtistId, count(Title) AS AlbumCount
    FROM Album
    GROUP BY ArtistId);

    結果:

    21       

    これは、ORDER BYを使用して別のクエリを実行することで確認できます。 条項。

    SELECT 
      ar.Name, 
      count(al.Title) AS AlbumCount
    FROM Album al
    INNER JOIN Artist ar
    ON ar.ArtistId = al.ArtistId
    GROUP BY ar.Name
    ORDER BY AlbumCount DESC
    LIMIT 10;

    結果:

    Name                  AlbumCount
    --------------------  ----------
    Iron Maiden           21        
    Led Zeppelin          14        
    Deep Purple           11        
    Metallica             10        
    U2                    10        
    Ozzy Osbourne         6         
    Pearl Jam             5         
    Faith No More         4         
    Foo Fighters          4         
    Lost                  4                

    NULL値の処理

    前述のように、グループにNULL以外の値がない場合(つまり、すべての値がNULLである場合)、max() NULLを返します。

    SELECT 
      max(123),
      max(NULL);

    結果:

    max(123)    max(NULL) 
    ----------  ----------
    123                   

    文字列でのMax()の使用

    前述のように、max() ORDER BYを使用して最後に返される値を返します 句(デフォルトの昇順を使用していると仮定)。

    これと同じ概念が文字列にも当てはまります。

    SELECT max(ProductName) FROM Products;

    結果:

    Widget Opener

    そのため、最大文字数などの文字列は返されません。

    この結果は、ORDER BYを使用したクエリで確認できます。 条項。

    SELECT * FROM Products 
    ORDER BY ProductName;

    結果:

    ProductId   ProductName            Price     
    ----------  ---------------------  ----------
    1           Blue Widgets (6 Pack)  389.45    
    4           Foobar Set             120.0     
    5           Red Widget                       
    2           Widget Holder          139.5     
    3           Widget Opener          89.27     

    1. Word、Excel、PowerPointでクイックアクセスツールバーを表示または再表示する方法

    2. DjangoをHerokuにデプロイする(Psycopg2エラー)

    3. 日単位の2つのタイムスタンプ間のMySqlの違いは?

    4. サーバーのタイムゾーン値「AEST」が認識されないか、複数のタイムゾーンを表します