sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLのSUM()関数

    PostgreSQLでは、SUM() 関数は、null以外の入力値の合計を計算し、結果を返します。

    つまり、数値を加算して結果を返します。

    これがどのように機能するかを示す簡単な例です:

    SELECT SUM(amount) 
    FROM payment;

    結果:

    67416.51

    この場合、amount paymentの列です テーブル。

    これをもう少し詳しく説明するために、表のスナップショットを次に示します。

    +------------+-------------+----------+-----------+--------+----------------------------+
    | payment_id | customer_id | staff_id | rental_id | amount |        payment_date        |
    +------------+-------------+----------+-----------+--------+----------------------------+
    |      16050 |         269 |        2 |         7 |   1.99 | 2017-01-24 21:40:19.996577 |
    |      16051 |         269 |        1 |        98 |   0.99 | 2017-01-25 15:16:50.996577 |
    |      16052 |         269 |        2 |       678 |   6.99 | 2017-01-28 21:44:14.996577 |
    |      16053 |         269 |        2 |       703 |   0.99 | 2017-01-29 00:58:02.996577 |
    |      16054 |         269 |        1 |       750 |   4.99 | 2017-01-29 08:10:06.996577 |
    |      16055 |         269 |        2 |      1099 |   2.99 | 2017-01-31 12:23:14.996577 |
    |      16056 |         270 |        1 |       193 |   1.99 | 2017-01-26 05:10:14.996577 |
    |      16057 |         270 |        1 |      1040 |   4.99 | 2017-01-31 04:03:42.996577 |
    |      16058 |         271 |        1 |      1096 |   8.99 | 2017-01-31 11:59:15.996577 |
    ...

    amountを確認できます この例で追加した列。

    表にはそれよりもはるかに多くのデータが含まれていますが、これは、合計した値のスナップショットを示しています。

    フィルタリングされた結果

    SUM() 関数は、クエリによって返された行を操作します。したがって、結果をフィルタリングすると、SUM()の結果になります。 それを反映します。

    結果をフィルタリングしましょう:

    SELECT SUM(amount) 
    FROM payment
    WHERE customer_id = 269;

    結果:

    129.70

    そのため、今回は顧客269が支払ったすべての金額の合計を取得しました。

    DISTINCT キーワード

    DISTINCTを使用できます SUM()を含むキーワード 個別の値のみを計算します。つまり、重複する値がある場合、それらは1つの値として扱われます。

    例:

    SELECT 
        SUM(amount) AS "All",
        SUM(DISTINCT amount) AS "Distinct"
    FROM payment;

    結果:

    +----------+----------+
    |   All    | Distinct |
    +----------+----------+
    | 67416.51 |   116.75 |
    +----------+----------+

    この例では、DISTINCTの結果を比較します 省略しないオプション。

    この場合、非常に大きな違いがあります。これは、その列に重複する値が多数あることを示しています。

    これを確認するために、次のような個別の値を出力できます。

    SELECT DISTINCT amount
    FROM payment;

    結果:

    +--------+
    | amount |
    +--------+
    |   1.99 |
    |   3.98 |
    |   7.99 |
    |   5.99 |
    |  10.99 |
    |   2.99 |
    |   8.97 |
    |   8.99 |
    |   3.99 |
    |   9.98 |
    |  11.99 |
    |   7.98 |
    |   6.99 |
    |   0.00 |
    |   4.99 |
    |   5.98 |
    |   0.99 |
    |   1.98 |
    |   9.99 |
    +--------+
    (19 rows)

    したがって、この例では、これらの個別の値をすべて合計しました。


    1. OracleSQLで2つの日付/時刻の差を計算します

    2. Oracleのテーブルにエイリアスを与えるにはどうすればよいですか?

    3. MySQLでの複数の更新

    4. Javaでユーザー定義型を含むOracleストアドプロシージャを呼び出す方法は?