Di SQL Server, SUM()
fungsi agregat mengembalikan jumlah ekspresi yang diberikan.
Ini juga dapat digunakan untuk mengembalikan jumlah semua nilai (unik) yang berbeda dalam ekspresi.
SUM()
hanya bekerja pada kolom numerik. Nilai nol diabaikan.
Sintaks
Sintaksnya seperti ini:
SUM ( [ ALL | DISTINCT ] expression )
Itu juga dapat digunakan dengan OVER
klausa:
SUM ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)
Contoh
Misalkan kita memiliki tabel bernama Products
dengan data sebagai berikut:
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Hasil:
+------------+---------------------------------+----------------+ | VendorId | ProductName | ProductPrice | |------------+---------------------------------+----------------| | 1001 | Left handed screwdriver | 25.99 | | 1001 | Long Weight (blue) | 14.75 | | 1001 | Long Weight (green) | 11.99 | | 1002 | Sledge Hammer | 33.49 | | 1003 | Chainsaw | 245.00 | | 1003 | Straw Dog Box | NULL | | 1004 | Bottomless Coffee Mugs (4 Pack) | 9.99 | | 1001 | Right handed screwdriver | 25.99 | +------------+---------------------------------+----------------+
Kita dapat menggunakan kueri berikut untuk mendapatkan jumlah semua harga.
SELECT SUM(ProductPrice)
FROM Products;
Hasil:
367.20
Di sini, informasi harga disimpan di ProductPrice
kolom, jadi kami meneruskannya sebagai argumen ke SUM()
fungsi, yang kemudian menghitung jumlah dan mengembalikan hasilnya.
Nilai Null
SUM()
fungsi mengabaikan nilai nol saat melakukan perhitungannya.
Jika kolom berisi nilai nol, Anda mungkin melihat peringatan yang menunjukkan bahwa nilai nol telah dihapus.
Sebagai contoh, inilah peringatan yang saya dapatkan saat menjalankan contoh di atas:
SELECT SUM(ProductPrice)
FROM Products;
Hasil:
+--------------------+ | (No column name) | |--------------------| | 367.20 | +--------------------+ Warning: Null value is eliminated by an aggregate or other SET operation.
Hasil yang Difilter
SUM()
fungsi beroperasi pada baris yang dikembalikan oleh kueri. Jadi jika Anda memfilter hasilnya, hasil dari SUM()
akan mencerminkan hal itu.
SELECT SUM(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Hasil:
78.72
Dalam hal ini, 78,72 adalah jumlah dari semua produk yang ditawarkan oleh vendor tertentu.
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(ALL ProductPrice) AS "All",
SUM(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
Hasil:
+--------+------------+ | All | Distinct | |--------+------------| | 367.20 | 341.21 | +--------+------------+ Warning: Null value is eliminated by an aggregate or other SET operation.
Meja kami berisi dua item dengan harga yang sama (obeng tangan kiri dan obeng tangan kanan sama-sama dihargai 25,99). DISTINCT
kata kunci menghasilkan kedua nilai tersebut diperlakukan sebagai satu.
Fungsi Jendela
SUM()
fungsi dapat digunakan dengan OVER
klausa untuk membuat fungsi jendela. Lihat SQL SUM()
untuk Pemula sebagai contoh.