ホームページ  >  記事  >  データベース  >  Oracleグループの使い方

Oracleグループの使い方

青灯夜游
青灯夜游オリジナル
2022-03-17 12:47:5210495ブラウズ

Oracle では、クエリ結果をグループ化するには、「group by」キーワードを SELECT ステートメントと一緒に使用する必要があります。行は、行または式の値によってグループ化された概要行に結合できます。構文「SELECT フィールド リスト FROM データ」テーブル名 GROUP BY フィールド名;"。

Oracleグループの使い方

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

Oracle GROUP BY 句の概要

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

GROUP BY 句は、行または式の値によって行をグループ化された集計行に結合するために SELECT ステートメントで使用されます。 GROUP BY 句は、グループごとに 1 行を返します。

GROUP BY 句は通常、AVG()、COUNT()、MAX()、MIN()、SUM() などの集計関数とともに使用されます。この場合、集計関数は各グループの概要情報を返します。たとえば、製品にいくつかのカテゴリがある場合、AVG() 関数は各カテゴリの製品の平均価格を返します。

次に、Oracle の GROUP BY 句の構文を示します。

SELECT
    字段列表
FROM
    数据表名
GROUP BY
    字段名;

GROUP BY 句は、FROM 句の後に表示されます。 WHERE 句を指定する場合は、GROUP BY 句を WHERE 句の前に配置する必要があります。

GROUP BY 句は、グループ化列の値 (c1、c2、c3 など) によって行をグループ化します。 GROUP BY 句には、集計列またはグループ化列のみを含めることができます。

一度に計算する複数のグループ化レベルを指定する場合は、次の ROLLUP 構文を使用します。

SELECT
    字段列表
FROM
    数据表名
GROUP BY
    ROLLUP(c1,c2,c3);

Oracle GROUP BY 例

サンプル データベース内の次の orders テーブルと order_items テーブルを使用してデモを行います:

Oracleグループの使い方

# #1. Oracle GROUP BY

の基本的な例 次のステートメントは、

GROUP BY 句を使用して、orders テーブル内で一意の注文ステータスを検索します。 :

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

Oracleグループの使い方

このステートメントは、

DISTINCT を使用した次のステートメントと同じ効果があります。 演算子:

SELECT
    DISTINCT status
FROM
    orders;

2. Oracle GROUP BY 集計の例

次のステートメントは顧客の注文数量を返します:

SELECT
    customer_id, COUNT( order_id )
FROM
    orders
GROUP BY
    customer_id
ORDER BY
    customer_id;
上記のクエリ ステートメントを実行すると、次の結果が得られます。 -

Oracleグループの使い方

この例では、注文を顧客番号でグループ化し、

COUNT() を使用します。注文数量を返す 関数。

より意味のあるデータを取得するには、次のように

orders テーブルと customers テーブルを結合します。

SELECT
    name, COUNT( order_id )
FROM
    orders
INNER JOIN customers
        USING(customer_id)
GROUP BY
    name
ORDER BY
    name;
上記のクエリ ステートメントを実行します。次の結果が得られます -

Oracleグループの使い方

#3. Oracle GROUP BY 式の例

次の例は次のとおりです。 year 注文をグループ化し、年間の注文数を返します。次のクエリ ステートメントを参照してください。

SELECT
    EXTRACT(YEAR FROM order_date) YEAR,
    COUNT( order_id )
FROM
    orders
GROUP BY
    EXTRACT(YEAR FROM order_date)
ORDER BY
    YEAR;
上記のクエリ ステートメントを実行すると、次の結果が得られます。

Oracleグループの使い方

この例では、

EXTRACT を使用します。 ()関数は注文日から年の情報を取得します。

前の例とは異なり、これは

GROUP BY 句で年を返す式を使用します。

4. ROLLUP を使用した Oracle GROUP BY の例

次のステートメントは、

customer_id,## によって売上高を計算します。 #status と (customer_id, status) でグループ化します。 <pre class="brush:php;toolbar:false">SELECT     customer_id,     status,     SUM( quantity * unit_price ) sales FROM     orders INNER JOIN order_items         USING(order_id) GROUP BY     ROLLUP(         customer_id,         status     );</pre> 上記のクエリ ステートメントを実行すると、次の結果が得られます -

Oracleグループの使い方 推奨チュートリアル: 「

Oracle チュートリアル

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

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