[MySQLは知っておく必要があります(10)] [グループデータ]

戻る:[MySQLは知っておくべき(9)] [概要データ]

+++++++++++++ Start line ++++++++++++++++

1.データのグループ化

サプライヤ1003から提供された製品の数を返します

mysql> SELECT COUNT(*) AS num_prods
    -> FROM products
    -> WHERE vend_id =1003;

ここに画像の説明を挿入

2、グループを作成する

mysql> SELECT vend_id, COUNT(*) AS num_prods
    -> FROM products
    -> GROUP BY vend_id;

ここに画像の説明を挿入

GROUP BYの規定について1.
GROUP BY句には任意の数の列を含めることができます
。2.グループはGROUP BY句にネストされ、データは最後に指定されたグループに要約されます。3. GROUP BY句は
文にリストされていますの各列は、検索列または有効な式である必要があります
。4.集計計算ステートメントを除き、SELECTステートメントの各列は、GROUP BY句で指定する必要があります
。5.グループにNULL値がある場合、NULLグループで返却いたします。
6. GROUP BY句は、WHERE句の後、ORDER BY句の前に置く必要があります。

3、フィルターグループ

HAVINGはすべてのWHERE演算子をサポートします

WHERE句の条件とオプションはHAVINGに適用可能で、構文は同じですが、キーワードが異なります

mysql> SELECT cust_id, COUNT(*) AS orders
    -> FROM orders
    -> GROUP BY cust_id
    -> HAVING COUNT(*) >= 2;

ここに画像の説明を挿入

HAVINGとWHEREの違い

データのグループ化前のWHEREフィルター、データのグループ化後のHAVINGフィルター

価格が10以上の製品が3つ以上あるサプライヤーをリストする

mysql> SELECT vend_id, COUNT(*) AS num_prods
    -> FROM products
    -> WHERE prod_price >= 10
    -> GROUP BY vend_id
    -> HAVING COUNT(*) >= 2;

ここに画像の説明を挿入

mysql> SELECT vend_id,COUNT(*) AS num_prods
    -> FROM products
    -> GROUP BY vend_id
    -> HAVING COUNT(*) >= 2;

ここに画像の説明を挿入

4、グループ化とソート

合計注文価格が50以上の注文の注文番号と合計注文価格を取得する

mysql> SELECT order_num, SUM(quantity*item_price) AS ordertotal
    -> FROM orderitems
    -> GROUP BY order_num
    -> HAVING SUM(quantity*item_price) >= 50;

ここに画像の説明を挿入

合計注文価格で出力を並べ替える

mysql> SELECT order_num, SUM(quantity*item_price) AS ordertotal
    -> FROM orderitems
    -> GROUP BY order_num
    -> HAVING SUM(quantity*item_price) >= 50
    -> ORDER BY ordertotal;

ここに画像の説明を挿入

5、SELECT句の順序

SELECT-FROM-WHERE-GROUP BY(グループの説明)-HAVING(グループレベルのフィルタリング)-ORDER BY-LIMIT

+++++++++++++ End line ++++++++++++++++

おすすめ

転載: blog.csdn.net/qq_42893334/article/details/108794901