Di PostgreSQL, SUM()
fungsi menghitung jumlah nilai input bukan nol dan mengembalikan hasilnya.
Dengan kata lain, ini menambahkan angka dan mengembalikan hasilnya.
Contoh
Berikut adalah contoh cepat untuk mendemonstrasikan cara kerjanya:
SELECT SUM(amount)
FROM payment;
Hasil:
67416.51
Dalam hal ini, amount
adalah kolom di payment
meja.
Untuk memberikan sedikit lebih banyak konteks, berikut ini cuplikan tabelnya:
+------------+-------------+----------+-----------+--------+----------------------------+ | 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 | ...
Kita bisa melihat amount
kolom yang kami tambahkan dalam contoh kami.
Tabel berisi lebih banyak data daripada itu, tetapi ini menunjukkan cuplikan nilai yang kami tambahkan.
Hasil yang Difilter
SUM()
fungsi beroperasi pada baris yang dikembalikan oleh kueri. Jadi jika Anda memfilter hasilnya, hasil dari SUM()
akan mencerminkan hal itu.
Mari kita filter hasilnya:
SELECT SUM(amount)
FROM payment
WHERE customer_id = 269;
Hasil:
129.70
Jadi kali ini kami mendapatkan jumlah dari semua jumlah yang dibayarkan oleh pelanggan 269.
Yang DISTINCT
Kata kunci
Anda dapat menggunakan DISTINCT
kata kunci dengan SUM()
untuk menghitung hanya nilai yang berbeda. Artinya, jika ada nilai duplikat, mereka diperlakukan sebagai satu nilai.
Contoh:
SELECT
SUM(amount) AS "All",
SUM(DISTINCT amount) AS "Distinct"
FROM payment;
Hasil:
+----------+----------+ | All | Distinct | +----------+----------+ | 67416.51 | 116.75 | +----------+----------+
Contoh ini membandingkan hasil DISTINCT
pilihan untuk tidak menghilangkannya.
Dalam hal ini, ada perbedaan yang sangat besar, yang menunjukkan bahwa ada banyak nilai duplikat di kolom tersebut.
Untuk memverifikasi ini, kami dapat menampilkan nilai yang berbeda seperti ini:
SELECT DISTINCT amount
FROM payment;
Hasil:
+--------+ | 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)
Jadi contoh kita menambahkan semua nilai yang berbeda itu.