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

集計関数はORDERBY句で何ができますか?

    表の列ではなく集計値を実際に選択すると、結果がより明確になります。

    SELECT SUM(id) FROM plant ORDER BY SUM(id)
    

    これにより、すべてのIDの合計が返されます。もちろん、これは役に立たない例です。集計では常に1つの行しか作成されないため、順序付けする必要はありません。クエリで行qith列を取得する理由は、MySQLがランダムではなく決定論的でもない1つの行を選択するためです。あなたの場合、それがテーブルの最初の列であることが起こりますが、ストレージエンジン、主キーなどによっては、他の列が別の行を取得する場合があります。したがって、ORDERBY句でのみ集計することはあまり役に立ちません。

    通常は、特定のフィールドでグループ化してから、結果セットを何らかの方法で並べ替えます。

    SELECT fruit, COUNT(*)
    FROM plant
    GROUP BY fruit
    ORDER BY COUNT(*)
    

    これはもっと興味深いクエリです!これにより、果物ごとに1行と、その果物の総数が表示されます。さらにリンゴを追加してみると、順序が実際に意味をなし始めます:

    完全な表:

    +----+--------+
    | id | fruit  |
    +----+--------+
    |  1 | banana |
    |  2 | apple  |
    |  3 | orange |
    |  4 | apple  |
    |  5 | apple  |
    |  6 | banana |
    +----+--------+
    

    上記のクエリ:

    +--------+----------+
    | fruit  | COUNT(*) |
    +--------+----------+
    | orange |        1 |
    | banana |        2 |
    | apple  |        3 |
    +--------+----------+
    


    1. Springデータのエンティティにスキーマ名を追加しますか?

    2. SQL Server(T-SQL)で日付から年を抽出する3つの方法

    3. MySQLに正しく保存されていないバイナリデータ

    4. OracleのRAWTONHEX()関数