SQLのグループGROUP BY
は、「各国の顧客の数を見つける」など、指定された列に同じ値を概要行にグループ化する行をグループ化するために使用されます。多くの場合、集計関数(Count、Max、Min、Sum、AVGなど)で使用され、データの各グループで計算を実行します。
GROUP BY
を使用するには、通常、SQLクエリを次のように構成します。
<code class="sql">SELECT column_name(s), aggregate_function(column_name) FROM table_name WHERE condition GROUP BY column_name(s) ORDER BY column_name(s);</code>
たとえば、columns CustomerID
、 OrderDate
、およびOrderAmount
を搭載したOrders
という名前のテーブルがあり、顧客あたりの合計注文額を見つけたい場合は、以下を使用します。
<code class="sql">SELECT CustomerID, SUM(OrderAmount) AS TotalOrderAmount FROM Orders GROUP BY CustomerID;</code>
このクエリは、 CustomerID
によってOrders
テーブルをグループ化し、各顧客のOrderAmount
の合計を計算します。
SQLの集計関数は、一連の値で計算を実行し、単一の値を返します。それらは、各グループのデータを要約するためにGROUP BY
ごとに一般的に使用されます。一般的な集計関数は次のとおりです。
COUNT(CustomerID)
顧客の数をカウントします。SUM(OrderAmount)
合計順序金額を計算します。AVG(OrderAmount)
平均注文額を計算します。MIN(OrderAmount)
最小の注文量を見つけます。MAX(OrderAmount)
最大の注文額を見つけます。これらの機能は、洞察に富んだレポートと要約を生成するために、さまざまな方法でGROUP BY
と組み合わせることができます。
はい、SQLの複数の列でGROUP BY
使用できます。複数の列でグループ化すると、結果はそれらの列の値の組み合わせによってグループ化されます。これにより、より詳細なデータ分析が可能になります。
複数の列によるグループ化の構文は、句GROUP BY
内の列をリストするだけで、コンマで分離されています。
<code class="sql">SELECT column1, column2, aggregate_function(column3) FROM table_name GROUP BY column1, column2;</code>
たとえば、年間顧客あたりの合計注文額を見つけたい場合は、以下を使用できます。
<code class="sql">SELECT CustomerID, YEAR(OrderDate) AS OrderYear, SUM(OrderAmount) AS TotalOrderAmount FROM Orders GROUP BY CustomerID, YEAR(OrderDate);</code>
このクエリは、 CustomerID
およびOrderDate
の年ごとのOrders
テーブルをグループ化し、顧客と年の一意の組み合わせの合計注文額を計算します。
HAVING
句は、 GROUP BY
ごとにグループと組み合わせて使用され、指定された条件に基づいてグループをフィルタリングします。句は集約が行われる前に個々の行をろ過するWHERE
で、 HAVING
は集約が発生した後にグループ化されたデータをフィルターします。
両方のGROUP BY
を使用し、 HAVING
クエリの典型的な構造は次のとおりです。
<code class="sql">SELECT column_name(s), aggregate_function(column_name) FROM table_name WHERE condition GROUP BY column_name(s) HAVING condition ORDER BY column_name(s);</code>
たとえば、顧客あたりの合計注文額を見つけたいが、総注文額が1000を超える顧客のみを含める場合は、以下を使用します。
<code class="sql">SELECT CustomerID, SUM(OrderAmount) AS TotalOrderAmount FROM Orders GROUP BY CustomerID HAVING SUM(OrderAmount) > 1000;</code>
このクエリでは、 GROUP BY
ClauseはCustomerID
による注文をグループ化し、各顧客の合計注文額を計算します。 HAVING
句は、結果をフィルタリングして、合計注文額が1000を超えるグループ(顧客)のみを含めます。
以上がSQLの句ごとにグループを使用してデータをグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。