ホームページ  >  記事  >  データベース  >  mysql データのグループ化: グループ化の作成

mysql データのグループ化: グループ化の作成

巴扎黑
巴扎黑オリジナル
2017-05-09 13:49:562321ブラウズ

mysql データのグループ化

SQL 集計関数を使用してデータを要約できます。これにより、すべてのデータを取得しなくても、行をカウントし、合計と平均を計算し、最大値と最小値を取得することができます。

これまでのすべての計算は、テーブル内のすべてのデータ、または特定の where 句に一致するデータに対して実行されました。念のため、次の例ではサプライヤー 1003 が提供する製品の数を返します。

入力:

select count(*) as mun_prods from products where vend_id = 1003;

出力:

mysql データのグループ化: グループ化の作成

しかし、各サプライヤーが提供する製品の数を返したい場合はどうすればよいでしょうか?あるいは、1 つの製品のみを提供するサプライヤーから提供された製品を返品する場合、または 10 個を超える製品を提供するサプライヤーから提供される製品を返品する場合はどうなるでしょうか?

今はグループがスキルを発揮する時です。グループ化により、データを複数の論理グループに分割し、グループごとに集計計算を実行できるようになります。

mysqlはグループを作成します

グループはselect文のgroup by句で確立されます。グループ化を理解する最も良い方法は、次の例を見ることです:

入力:

select vend_id,count(*) as num_prods from products group by vend_id;

出力:

mysql データのグループ化: グループ化の作成

分析: 上記の select ステートメントは 2 つの列を指定し、vend_id には製品サプライヤーの ID が含まれ、num_prods は計算フィールド (count(*) 関数を使用して作成)。 Group by 句の知識 MySQL は、vend_id によってデータを並べ替えてグループ化します。これにより、テーブル全体ではなく、vend_id ごとに num_prods が 1 回計算されます。出力からわかるように、サプライヤー 1001 には 3 つの製品があり、サプライヤー 1002 には 2 つの製品があり、サプライヤー 1003 には 7 つの製品があり、サプライヤー 1005 には 2 つの製品があります。

group byを使用しているため、計算および評価する各グループを指定する必要はありません。システムが自動的に実行します。 group by 句は、MySQL にデータをグループ化し、結果セット全体ではなく各グループを集計するように促します。

group by 句を使用する前に、いくつかの重要な規則を理解しておく必要があります。

1. group by 句には、任意の数の列を含めることができます。これによりグループのネストが可能になり、データのグループ化をより詳細に制御できるようになります。

2. グループ化が group by 句でネストされている場合、データは最後に指定されたグループ化に基づいて集計されます。つまり、グループを構築するとき、指定されたすべての列が一緒に計算されます (そのため、個々の列からデータを取得することはできません)。

3. group by 句にリストされる各列は、取得列または有効な式である必要があります (ただし、集計関数ではありません)。 select で式を使用する場合は、同じ式を group by 句で指定する必要があります。エイリアスは使用できません。

4. 集計計算ステートメントを除き、select ステートメントの各列は group by 句で指定する必要があります。

5. グループ化列に NULL 値がある場合、グループ化として NULL が返されます。列内に NULL 値の行が複数ある場合、それらはグループ化されます。

6. group by 句は where 句の後、order by 句の前に指定する必要があります。

【関連する推奨事項】

  1. mysqlデータのグループ化: フィルターのグループ化

  2. mysqlデータのグループ化とソート、およびSELECT句の順序

以上がmysql データのグループ化: グループ化の作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。