ホームページ >データベース >mysql チュートリアル >グループ化とはどういう意味ですか?

グループ化とはどういう意味ですか?

青灯夜游
青灯夜游オリジナル
2023-03-09 18:37:1131437ブラウズ

group by は「グループ クエリ」を意味し、「特定のルールに従って (グループ化して) グループ化する」と理解できます。その機能は、特定のルール領域を通じてデータ セットをいくつかの小さなグループに分割することです。次に、いくつかの小さな領域に対してデータ処理を実行します。 MySQL では、GROUP BY は 1 つ以上のフィールドに基づいてクエリ結果をグループ化するために使用される SELECT ステートメントのオプションの句で、結果セット内の行数を減らします。

グループ化とはどういう意味ですか?

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

group by は「グループ クエリ」を意味します。

Group By ステートメントは、英語で直訳すると「特定のルールに従って (グループに) グループ化する」という意味です。その機能は、データセットを特定のルールに従っていくつかの小領域に分割し、いくつかの小領域に対してデータ処理を実行することです。

MySQL は GROUP BY グループ クエリを使用します

MySQL では、GROUP BY キーワードを使用して、1 つ以上のフィールドに基づいてクエリ結果をグループ化できます。

GROUP BY 句は、列または式の値に基づいて、一連の行を要約行レコードの小さなグループにグループ化します。 GROUP BY 句は、グループごとに 1 行を返します。つまり、結果セット内の行数が減ります。

GROUP BY 句は、SUM、AVG、MAX、MIN、COUNT などの集計関数とともによく使用されます。集計関数は、各グループに関する情報を計算するために SELECT 句で使用されます。

GROUP BY 句は、SELECT ステートメントのオプションの句です。 GROUP BY 句の構文は次のとおりです。

SELECT 
    c1, c2,..., cn, aggregate_function(ci)
FROM
    table
WHERE
    where_conditions
GROUP BY c1 , c2,...,cn;

GROUP BY 句は、FROM 句と WHERE 句の後に指定する必要があります。 GROUP BY キーワードの後に​​は、行をグループ化する条件として使用される列または式のカンマ区切りのリストが続きます。

MySQL GROUP BY の例

1. シンプルな MySQL GROUP BY の例

サンプル データベースを見てみましょう ( yiibaidb )、その構造は次のとおりです。 -

mysql> desc orders;

グループ化とはどういう意味ですか?

注文ステータスの値をサブグループにグループ化すると仮定すると、GROUP BY 句を使用する必要があります。ステータス列によるグループ化を指定し、次のようにクエリします。

SELECT 
    status
FROM
    orders
GROUP BY status;

上記のクエリ ステートメントを実行すると、次の結果が得られます。

グループ化とはどういう意味ですか?

GROUP BY 句の戻り値は一意です。次のクエリに示すように、DISTINCT 演算子と同様に機能します。

SELECT DISTINCT
    status
FROM
    orders;

上記のクエリ ステートメントを実行すると、次の結果が得られます-

グループ化とはどういう意味ですか?

2 、MySQL GROUP BY および集計関数

集計関数を使用すると、行のグループに対して計算を実行し、単一の値を返すことができます。 GROUP BY 句は、グループごとに計算を実行して単一の値を返すために、集計関数とともによく使用されます。

たとえば、各ステータスの注文数を知りたい場合は、以下に示すように COUNT 関数と GROUP BY 句クエリ ステートメントを使用できます。

SELECT 
    status, COUNT(*) AS total_number
FROM
    orders
GROUP BY status;

上記を実行します。クエリ ステートメントを実行すると、次の結果が得られます -

グループ化とはどういう意味ですか?

次の注文 (orders) テーブルと注文詳細 (orderdetails) テーブルを参照してください。その ER 図は次のとおりです-

グループ化とはどういう意味ですか?

ステータスごとにすべての注文の合計金額を取得するには、orderdetails テーブルを使用して注文テーブルを接続し、SUM 関数を使用して合計金額を計算します。次のクエリを参照してください。

SELECT 
    status, SUM(quantityOrdered * priceEach) AS amount
FROM
    orders
        INNER JOIN
    orderdetails USING (orderNumber)
GROUP BY status;

上記のクエリを実行すると、次の結果が得られます。 -

グループ化とはどういう意味ですか?

同様に、次のクエリは注文番号と各注文の合計金額。

SELECT 
    orderNumber,
    SUM(quantityOrdered * priceEach) AS total
FROM
    orderdetails
GROUP BY orderNumber;

上記のクエリを実行すると、次の結果が得られます-

グループ化とはどういう意味ですか?

3. MySQL GROUP BY 式の例

列に加えて、行も式によってグループ化できます。次のクエリは、年間の総売上高を取得します。

SELECT 
    YEAR(orderDate) AS year,
    SUM(quantityOrdered * priceEach) AS total
FROM
    orders
        INNER JOIN
    orderdetails USING (orderNumber)
WHERE
    status = 'Shipped'
GROUP BY YEAR(orderDate);

上記のクエリを実行すると、次の結果が得られます。 -

グループ化とはどういう意味ですか?

この例では、YEAR 関数を使用して、注文日 (注文日)。ステータスが「発送済み」の注文のみが含まれます。 SELECT 句に使用する式は、GROUP BY 句の式と同じである必要があることに注意してください。

MySQL GROUP BY および HAVING 句

HAVING 句を使用して、GROUP BY 句によって返されたグループをフィルタリングできます。次のクエリでは、HAVING 句を使用して 2013 年以降の年間売上合計を選択します。

SELECT 
    YEAR(orderDate) AS year,
    SUM(quantityOrdered * priceEach) AS total
FROM
    orders
        INNER JOIN
    orderdetails USING (orderNumber)
WHERE
    status = 'Shipped'
GROUP BY year
HAVING year > 2013;

上記のクエリを実行すると、次の結果が得られます -

グループ化とはどういう意味ですか?

GROUP BY子句:MySQL与标准SQL

标准SQL不允许使用GROUP BY子句中的别名,但MySQL支持此选项。以下查询从订单日期提取年份,并对每年的订单进行计数。该year用作表达式YEAR(orderDate)的别名,它也用作GROUP BY子句中的别名,此查询在标准SQL中无效。

参考以下查询 -

SELECT 
    YEAR(orderDate) AS year, COUNT(orderNumber)
FROM
    orders
GROUP BY year;

执行上面查询,得到以下结果 -

グループ化とはどういう意味ですか?

MySQL还允许您以升序或降序(标准SQL不能提供)对组进行排序。默认顺序是升序。例如,如果要按状态获取订单数量并按降序对状态进行排序,则可以使用带有DESC的GROUP BY子句,如下查询语句:

SELECT 
    status, COUNT(*)
FROM
    orders
GROUP BY status DESC;

执行上面查询,得到以下结果 -

1グループ化とはどういう意味ですか?

请注意,在GROUP BY子句中使用DESC以降序对状态进行排序。我们还可以在GROUP BY子句中明确指定ASC,按状态对分组进行升序排序。

【相关推荐:mysql视频教程

以上がグループ化とはどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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