SQLのグループごとの句は、指定された列に同じ値を概要行にグループ化する行をグループ化するために使用されます。一般に、各データのグループで計算を実行するために、集約関数(Count、Max、Min、Sum、AVGなど)で使用されます。グループごとに句を使用する方法は次のとおりです。
基本的な構文:クエリによるグループの基本的な構文は次のとおりです。
<code class="sql">SELECT column1, aggregate_function(column2) FROM table_name GROUP BY column1;</code>
この例では、 column1
を使用してデータをグループ化し、 aggregate_function(column2)
が各グループに適用されます。
例:列region
とamount
sales
と呼ばれるテーブルがあるとします。各地域の総売上額を見つけたいです。クエリは次のとおりです。
<code class="sql">SELECT region, SUM(amount) as total_sales FROM sales GROUP BY region;</code>
このクエリは、 region
列でデータをグループ化し、各グループのamount
の合計を計算します。
複数の列:コンマで区切られた句ごとにグループにそれらをリストすることで、複数の列ごとにグループ化できます。例えば:
<code class="sql">SELECT region, product, SUM(amount) as total_sales FROM sales GROUP BY region, product;</code>
このクエリは、 region
とproduct
両方でデータをグループ化し、各ユニークな組み合わせのamount
とregion
とproduct
合計を計算します。
句ごとにグループを使用する場合、いくつかの一般的な集計関数を使用して、グループ化されたデータの計算を実行します。これらの機能には次のものが含まれます。
count() :各グループの行数をカウントします。例えば:
<code class="sql">SELECT region, COUNT(*) as number_of_sales FROM sales GROUP BY region;</code>
sum() :各グループの数値列の合計を計算します。例えば:
<code class="sql">SELECT region, SUM(amount) as total_sales FROM sales GROUP BY region;</code>
AVG() :各グループの数値列の平均を計算します。例えば:
<code class="sql">SELECT region, AVG(amount) as average_sale FROM sales GROUP BY region;</code>
max() :各グループの列の最大値を見つけます。例えば:
<code class="sql">SELECT region, MAX(amount) as max_sale FROM sales GROUP BY region;</code>
min() :各グループの列の最小値を見つけます。例えば:
<code class="sql">SELECT region, MIN(amount) as min_sale FROM sales GROUP BY region;</code>
これらの機能により、さまざまな方法でデータを要約し、グループ化されたデータに関する洞察を提供できます。
Having句は、条項に基づいてグループ化された結果をフィルタリングするために、グループごとにグループと併用して使用されます。グループ化する前に行をフィルタリングするWhere句とは異なり、Have Clauseは作成された後にフィルターを使用します。一緒に使用する方法は次のとおりです。
基本的な構文:グループを組み合わせたクエリの構文と持っていることは次のとおりです。
<code class="sql">SELECT column1, aggregate_function(column2) FROM table_name GROUP BY column1 HAVING condition;</code>
例: sales
テーブルから総売上が10,000ドルを超える地域を見つけたいとします。クエリは次のとおりです。
<code class="sql">SELECT region, SUM(amount) as total_sales FROM sales GROUP BY region HAVING SUM(amount) > 10000;</code>
このクエリは、最初にregion
ごとのデータをグループ化し、各地域の総売上を計算し、結果をフィルタリングして、総売上が10,000ドルを超える地域のみを含めます。
Whereと組み合わせると、グループ化してグループをフィルタリングする前に、行をフィルタリングする場所を使用することもできます。例えば:
<code class="sql">SELECT region, SUM(amount) as total_sales FROM sales WHERE amount > 0 GROUP BY region HAVING SUM(amount) > 10000;</code>
このクエリでは、where句は最初に負の量またはゼロの量で行を除去し、データはregion
ごとにグループ化され、節約は総売上に基づいてグループをフィルタリングします。
SQLクエリで句ごとにグループを使用する場合、避けるべきいくつかの潜在的な落とし穴があります。
誤った列参照:グループによるグループのクエリでは、集約関数ではない選択リストの任意の列を句ごとにグループに含める必要があります。句ごとのグループに凝集していない列を含めることを忘れると、エラーまたは予期しない結果が生じる可能性があります。例えば:
<code class="sql">SELECT region, product, SUM(amount) -- This will cause an error if 'product' is not included in GROUP BY FROM sales GROUP BY region;</code>
正しいバージョンは次のとおりです。
<code class="sql">SELECT region, product, SUM(amount) FROM sales GROUP BY region, product;</code>
凝集列と非凝集列の混合:適切なグループ化なしで選択リストに凝集列と非凝集列を混合すると、予期しない結果が生じる可能性があります。例えば:
<code class="sql">SELECT region, SUM(amount), amount -- This will cause an error because 'amount' is not aggregated FROM sales GROUP BY region;</code>
これを修正するには、 amount
でグループ化するか、それに集計関数を使用する必要があります。
Basing by:having句を使用することは、グループで使用されることを意図しています。グループなしで使用すると、多くのSQLデータベースでエラーが発生します。例えば:
<code class="sql">SELECT region, SUM(amount) FROM sales HAVING SUM(amount) > 10000; -- This will cause an error because GROUP BY is missing</code>
正しいバージョンは次のとおりです。
<code class="sql">SELECT region, SUM(amount) FROM sales GROUP BY region HAVING SUM(amount) > 10000;</code>
これらの落とし穴を認識することにより、クエリごとに、より効果的で効率的なグループを書くことができます。
以上がグループごとのグループを使用してデータをどのようにグループ化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。