概要:このチュートリアルでは、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)
試してみてください
DESCGROUP BY句でstatusを降順でソートするために使用したことに注意してください。, また、ASCをGROUP BY句に明示的に指定して、ステータスごとに昇順でグループをソートすることもできます。
このチュートリアルでは、MySQLのGROUP BY句を使用して、列または式の値に基づいて行をサブグループにグループ化する方法を示しました。/p>
- このチュートリアルは役に立ちましたか?
- イェスノ