概要:このチュートリアルでは、MySQLGROUP BY
を使用して、列または式の値に基づいて行をサブグループにグループ化する方法を学びます。
MySQL GROUP BY句の概要
GROUP BY
句は、行のセットを列または式の値によって集計行のセットにグループ化します。 GROUP BY
句は、グループごとに一つの行を返します。 つまり、結果セット内の行数を減らします。,
多くの場合、GROUP BY
、SUM
、AVG
、MAX
、MIN
、iv id=”9d4d2ec8fdなどの集計関数でCOUNT
。 SELECT
句に表示される集計関数は、各グループに関する情報を提供します。
GROUP BY
句は、SELECT
ステートメントのオプションの句です。, 次に、GROUP BY
句構文を示します。
GROUP BY
句は、FROM
およびWHERE
句の後に表示する必要があります。 GROUP BY
キーワードの後には、行をグループ化する条件として使用するカンマ区切りの列または式のリストがあります。,
MySQL evaluates the GROUP BY
clause after the FROM
, WHERE
and SELECT
clauses and before the HAVING
, ORDER BY
and LIMIT
clauses:
MySQL GROUP BY examples
Let’s take some example of using the GROUP BY
clause.,
A)単純なMySQL GROUP BY example
サンプルデータベースのorders
テーブルを見てみましょう。,
注文のステータスの値をサブグループにグループ化する場合は、GROUP BY
句とstatus
列を次のクエリとして使用します。
Code language: SQL (Structured Query Language) (sql)
それを試してみてください
ご覧のとおり、GROUP BY
句は、status
値。, これは、次のクエリに示すように、DISTINCT
演算子のように動作します。
Code language: SQL (Structured Query Language) (sql)
試してみてください
B)MySQL GROUP BYを集計関数で使用する
集計関数を使用すると、行のセットの計算を実行し、単一の値を返すことができます。 GROUP BY
句は、計算を実行し、各サブグループに対して単一の値を返すために集計関数とともによく使用されます。,
たとえば、各ステータスの注文数を知りたい場合は、COUNT
関数をGROUP BY
句とともに使用できます。
Code language: SQL (Structured Query Language) (sql)
試してみてください
次のorders
およびorderdetails
テーブルを参照してください。,
ステータス別にすべての注文の合計金額を取得するには、orders
テーブルとorderdetails
テーブルを結合し、SUM
合計金額を計算する関数。 次のクエリを参照してください。
Code language: SQL (Structured Query Language) (sql)
試してみてください
同様に、次のクエリは注文番号と各注文の合計金額を返します。,
Code language: SQL (Structured Query Language) (sql)
それを試してみてください
C)MySQL GROUP BY with expression example
列に加えて、行を式でグループ化できます。 次のクエリは、各年のsales上高の合計を取得します。
試してみてください
この例では、YEAR
関数を使用して、注文日から年データを抽出しました(orderDate
)。, Total上高には、shipped
ステータスの注文のみが含まれていました。 SELECT
句に表示される式は、GROUP BY
句の式と同じでなければならないことに注意してください。
D)HAVING句でMySQL GROUP BYを使用する例
GROUP BY
句によって返されるグループをフィルタリングするには、HAVING
句を使用します。 次のクエリでは、HAVING
句を使用して、2003年以降の年のtotal上高合計を選択します。,
Code language: SQL (Structured Query Language) (sql)
それを試してみてください
GROUP BY句:MySQL対標準SQL
標準SQLでは、GROUP BY
句は、しかし、mysqlはこれをサポートしています。
たとえば、次のクエリでは、注文日から年を抽出します。 まず、year
を式YEAR(orderDate)
のエイリアスとして使用し、次にyear
エイリアスをGROUP BY
句で使用します。, このクエリは、標準SQLでは無効です。
試してみてください
MySQLでは、標準SQLではグループを昇順または降順でソートすることもできます。 デフォルトの順序は昇順です。, たとえば、ステータスごとに注文数を取得し、ステータスを降順でソートする場合は、GROUP BY
句をDESC
として使用できます。
Code language: SQL (Structured Query Language) (sql)
試してみてください
DESC
GROUP BY
句でstatus
を降順でソートするために使用したことに注意してください。, また、ASC
をGROUP BY
句に明示的に指定して、ステータスごとに昇順でグループをソートすることもできます。
このチュートリアルでは、MySQLのGROUP BY
句を使用して、列または式の値に基づいて行をサブグループにグループ化する方法を示しました。/p>
- このチュートリアルは役に立ちましたか?
- イェスノ