Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Menggunakan Fungsi T-SQL SQL Server SUM:5 Kasus Penggunaan

Fungsi T-SQL SUM adalah salah satu fungsi fundamental. Tujuannya adalah untuk menghitung jumlah semua nilai dalam kolom yang ditentukan – perhatikan bahwa ini hanya berlaku untuk kolom numerik.

Di bawah ini adalah sintaks SQL SUM.

-- Aggregate Function Syntax    
SUM ( [ ALL | DISTINCT ] expression )  

-- Analytic Function Syntax   
SUM ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)
  • SEMUA adalah nilai default, tidak wajib untuk lulus. Ini memungkinkan untuk mengembalikan jumlah semua nilai.
  • BEDA menentukan bahwa ia harus mengembalikan jumlah nilai unik saja, mengabaikan nilai duplikat.
  • Ekspresi adalah kategori tipe data numerik yang tepat atau perkiraan, kecuali untuk bit tipe data.
  • SELESAI klausa dengan partition_by_clause dan order_by_clause adalah untuk menggunakan fungsi ini pada partisi tertentu.
    • partition_by_clause membagi himpunan hasil yang dihasilkan oleh klausa FROM ke dalam partisi tempat fungsi tersebut diterapkan
    • order_by_clause menentukan urutan logis di mana operasi dilakukan.

Untuk mendemonstrasikan penggunaan fungsi SQL SUM, saya telah membuat tabel bernama Karyawan . Ini memiliki 5 kolom – nama , gaji , sewa , pajak , dan sifat pekerjaan . Kasus penggunaan berikut akan menjadi fokus:

  1. Penggunaan fungsi SUM dasar atau sederhana
  2. Menggunakan SUM dengan ekspresi CASE
  3. Menggunakan SUM dengan pernyataan GROUP BY
  4. Menggunakan SUM dengan klausa HAVING
  5. Menerapkan SUM untuk beberapa ekspresi aritmatika atau kompleks

Selain itu, kita akan mempelajari kasus penggunaan lain seperti menggunakan SUM dengan klausa WHERE, klausa ORDER BY, atau menggunakan DISTINCT dalam fungsi SUM untuk mendapatkan jumlah nilai unik. Tapi hal pertama yang pertama.

Use Case 1:Fungsi SQL SUM Sederhana

Seperti yang dinyatakan di atas, saya memiliki tabel bernama Karyawan dengan beberapa kolom. Asumsikan bahwa perusahaan Anda ingin mengetahui berapa biaya gaji yang mereka keluarkan untuk semua karyawan. Untuk mendapatkan nilai, Anda hanya perlu menambahkan gaji semua karyawan. SUM () akan membuat hidup Anda mudah, memberikan laporan seperti itu dengan cepat.

Kami akan menggunakan fungsi SUM() pada gaji kolom, dan outputnya adalah total biaya gaji yang dikeluarkan untuk semua karyawan perusahaan:

USE DBName
GO
SELECT SUM(Salary) As [Total Employees Cost]
FROM [dbo].[Employee]

Jika Anda memiliki nilai NULL di kolom, fungsi ini akan mengabaikannya dan melanjutkan dengan nilai baris berikutnya. Dengan demikian, Anda mungkin memiliki NULL untuk setiap karyawan yang meninggalkan organisasi – perusahaan tidak membayar apa pun untuk sumber daya tersebut.

Anda dapat melihat output di bawah ini – ini menunjukkan jumlah $885000 yang dihabiskan untuk gaji karyawan:

Jika ada duplikat nilai pada kolom mana pun, dan Anda ingin mendapatkan jumlah semua unik nilai, Anda dapat menggunakan DISTINCT argumen:

USE DBName
GO
--Get the sum of all values from column salary
SELECT SUM(Salary) As [Total Employees Cost]
FROM [dbo].[Employee]
GO

--Get the sum of all unique values from column salary
SELECT SUM(DISTINCT Salary) As [Total Employees Cost]
FROM [dbo].[Employee]
GO

Saya telah mengeksekusi kedua pernyataan bersama-sama. Pertama, itu adalah yang dari langkah sebelumnya dengan semua nilai gaji. Yang kedua adalah untuk nilai unik – menggunakan DISTINCT argumen.

Lihat tangkapan layar di bawah ini – ini menunjukkan keluaran dari kedua pernyataan, dan keduanya berbeda. Ketika saya menggunakan fungsi SUM untuk semua nilai secara default, hasilnya adalah $885000. Saat saya menggunakan DISTINCT argumen untuk mendapatkan jumlah nilai unik saja, hasilnya adalah $65000.

Jadi, kami memiliki nilai yang sama di kolom ini. dalam istilah bisnis, itu berarti kami memiliki beberapa karyawan yang menerima jumlah yang sama dengan gaji mereka.

Contoh ini menunjukkan penggunaan DISTINCT argumen untuk mendapatkan jumlah semua nilai unik. Dalam praktiknya, ini memungkinkan kita menghindari nilai duplikat dari hasil akhir.

Kami juga dapat menggunakan WHERE klausa dalam SQL SUM(). Katakanlah perusahaan Anda ingin mendapatkan total biaya yang dikeluarkan untuk karyawan yang mendapatkan lebih dari $100000 sebagai gaji, dan bukan karyawan tetap untuk memahami distribusi biaya. DI MANA klausa akan menyaring hasil dan memberikan total biaya sesuai kebutuhan bisnis.

Dalam pernyataan T-SQL di bawah ini, Anda dapat melihat WHERE klausul ditambahkan pada Sifat Ketenagakerjaan kolom. Kolom ini menyimpan catatan setiap karyawan, apakah mereka karyawan tetap atau kontrak.

Perhatikan bahwa saya telah menggunakan operator AND untuk menggabungkan kedua persyaratan:

USE DBName
GO
SELECT SUM(Salary) As [Total Employees Cost]
FROM [dbo].[Employee]
WHERE [Employment Nature] = ‘Contractor’ AND Salary >100000
GO

Keluaran menunjukkan bahwa perusahaan membelanjakan $240.000 untuk karyawan yang menerima $100.000 atau lebih, dan bukan karyawan tetap.

Use Case 2:Fungsi SQL SUM dengan Ekspresi CASE

Dalam skenario kami, kami ingin mengetahui berapa banyak karyawan yang bekerja sebagai tetap bersama dengan detail lainnya. untuk mendapatkan hasil ini, kita dapat menggunakan CASE ekspresi dalam SUM() fungsi. Meskipun demikian, Anda dapat dengan mudah mendapatkan hasil ini hanya dengan meletakkan WHERE klausa, terkadang Anda membutuhkan CASE dan SUM dalam persyaratan kueri yang kompleks.

Lihat pernyataan T-SQL di bawah ini dengan CASE ekspresi di dalam SUM() fungsi:

--USE SUM function with CASE expression
SELECT 
SUM(
CASE
  WHEN [Employment Nature] = ‘Permanent’ THEN 1 
  ELSE 0 
  END) As [Total Employees],
   FROM [dbo].[Employee]

Output dari pernyataan di atas menunjukkan 4 – perusahaan hanya memiliki 4 karyawan tetap sesuai catatan mereka di Karyawan tabel.

Mari kita ambil contoh lain dari KASUS dengan SUM () .

Saat menjelajahi kasus penggunaan 1, kami menemukan total biaya yang dikeluarkan untuk karyawan kontrak yang menerima $100000 atau lebih di bagian di atas dalam kasus penggunaan 1. Sekarang, kami ingin mencari jumlah karyawan tersebut. Dan, KASUS ekspresi akan muncul lagi.

Kita dapat menggunakan CASE dalam pernyataan T-SQL yang sama yang digunakan sebelumnya. Di bawah ini contohnya:

USE DBName
GO
SELECT SUM(Salary) As [Total Employees Cost],
SUM(CASE WHEN [Employment Nature] = ‘Contractor’ AND Salary >100000 THEN 1
ELSE 0
END) AS [Contractors Headcount]
FROM [dbo].[Employee]
WHERE [Employment Nature] = ‘Contractor’ AND Salary >100000
GO

Outputnya menunjukkan kepada kami 2 kontraktor yang bekerja dan mendapatkan lebih dari $100000.

Anda dapat menggunakan berbagai aspek CASE ekspresi di PILIH pernyataan bersama dengan SUM() berfungsi untuk memenuhi kebutuhan bisnis Anda.

Gunakan Kasus 3:Fungsi SQL SUM dengan GROUP BY

Mari kita asumsikan bahwa perusahaan kita ingin mengetahui berapa banyak uang yang dihabiskan untuk karyawan tetapnya, dan berapa banyak uang yang dihabiskan untuk karyawan kontrak. Kita bisa mendapatkan hasil ini dengan menggunakan SUM berfungsi bersama dengan GROUP BY pernyataan.

Perhatikan pernyataan T-SQL di bawah ini. Saya telah menggunakan GROUP BY pernyataan tentang Sifat Ketenagakerjaan kolom dan menerapkan fungsi SUM pada Gaji kolom untuk mendapatkan total gaji setiap jenis karyawan yang dikategorikan berdasarkan sifat pekerjaannya.

USE DBName
GO
SELECT [Employment Nature], SUM(Salary) As [Total Employees Cost]
FROM [dbo].[Employee]
GROUP BY [Employment Nature]

Hasil set memberikan total uang yang dihabiskan untuk kontraktor dan karyawan tetap. Jika Anda menambahkan kedua angka tersebut, jumlahnya akan menjadi total uang yang dihabiskan untuk gaji karyawan mereka (bandingkan angka ini dengan tangkapan layar pertama artikel ini).

USE Case 4:Fungsi SQL SUM dengan Pernyataan HAVING

Sekarang, kita akan mengeksplorasi penggunaan fungsi SUM dengan pernyataan HAVING dan GROUP BY bersama-sama. Contoh kami akan menampilkan daftar karyawan yang menerima lebih dari $150000 per tahun. Kita bisa mendapatkannya hanya dengan menggunakan pernyataan SELECT dengan klausa WHERE, tetapi saya akan menunjukkan cara mendapatkan hasil yang sama dengan HAVING, GROUP BY, dan SUM.

Ada 2 skrip T-SQL. Output dari kedua pernyataan sama, tetapi skrip pertama menggunakan pernyataan SELECT sederhana, sedangkan kode kedua menggunakan fungsi SUM bersama dengan klausa GROUP BY dan HAVING.

USE DBName
GO
SELECT name, salary
FROM [dbo].[Employee]
WHERE Salary >=150000
GO

--SUM with HAVING
SELECT name, SUM(salary) AS [Salary]
FROM [dbo].[Employee]
GROUP BY name HAVING SUM(salary) >=150000
GO

Lihat output dari kedua skrip:

Ada aspek lain dari penggunaan pernyataan ini. Saya telah melewati ekspresi aritmatika dalam fungsi SUM untuk mendapatkan sewa dan pajak biaya karyawan. Kemudian, saya menerapkan GROUP BY dan MEMILIKI pernyataan tentang Gaji kolom. Dengan kata sederhana, saya ingin mengetahui total biaya sewa dan pajak yang dikeluarkan oleh karyawan dengan gaji $150.000 atau lebih.

Saya juga menggunakan dua pertanyaan. Yang pertama mencantumkan rincian semua karyawan yang menerima $150000 atau lebih. Output ini diambil hanya untuk validasi dan verifikasi. Yang kedua menggunakan SUM fungsi pada dua kolom (sewa dan pajak ) sebagai total pengeluaran mereka. Kemudian berlaku GROUP BY dan MEMILIKI klausa:

USE DBName
GO
SELECT name, salary
FROM [dbo].[Employee]
WHERE Salary >=150000
GO

--SUM with HAVING and GROUP BY
SELECT name, SUM( rent + tax) AS [Total Expenses]
FROM [dbo].[Employee]
GROUP BY name HAVING SUM(salary) >=150000
GO

Mari kita menganalisis outputnya. Kueri pertama menampilkan semua detail karyawan dengan gaji $150000 atau lebih. Sekarang, lihat hasil kueri kedua. Di sini, kami telah mengambil karyawan dan pengeluaran mereka berdasarkan potongan gaji mereka yaitu $150000 atau lebih. Dengan cara ini, kami telah memverifikasi bahwa kueri kami dengan klausa SUM, GROUP BY, dan HAVING mengembalikan hasil yang benar.

Use Case 5:Fungsi SQL SUM dengan Beberapa Ekspresi Aritmatika

Fungsi SUM menawarkan fleksibilitas tinggi dalam hal ekspresi aritmatika. Kita dapat menggunakan beberapa ekspresi aritmatika, seperti menambah atau mengurangi antara beberapa nilai kolom bila diperlukan. Mari kita lihat sebuah contoh.

Kami ingin menarik laporan tentang total tabungan karyawan kami. Kolom pengeluaran atau tunjangan bisa bermacam-macam, seperti tunjangan sewa rumah, tunjangan perjalanan, tunjangan makan, dll. Tabel kami Karyawan memiliki dua kolom yang terkait dengan pengeluaran karyawan – sewa yang dibayarkan untuk akomodasi dan pajak yang dibayarkan kepada pemerintah. Anda dapat memahami konsep dan menerapkannya ke lebih banyak kolom dengan cara yang sama.

USE DBName
GO
--List table data for reference
SELECT *
FROM [dbo].[Employee]
GO

--SUM with multiple arithmetic expressions
SELECT name, SUM(salary – (rent + tax)) AS [Total Savings]
FROM [dbo].[Employee]
GROUP BY name
GO

Kueri pertama menampilkan semua data dari tabel Karyawan . Kami akan menggunakan data ini sebagai referensi untuk memverifikasi keluaran aktual kami yang dikembalikan oleh kueri kedua tentang total penghematan untuk setiap karyawan.

Kami mendapatkan ini dengan menambahkan semua pengeluaran dan kemudian mengurangi semua pengeluaran dari gaji karyawan seperti yang diberikan dalam SUM pernyataan fungsi. Anda dapat memverifikasinya dengan menghitung data ini secara manual dari hasil pertama yang ditetapkan untuk setiap karyawan agar divalidasi.

Kesimpulan

Kami telah menjelajahi beberapa kasus penggunaan fungsi SQL SUM dengan klausa lain. Omong-omong, alat digital modern untuk spesialis SQL Server dapat menyederhanakan tugas ini secara drastis. Misalnya, dbForge SQL Complete menyertakan fitur yang dapat menghitung fungsi agregat dari hasil siap yang ditetapkan dalam kisi hasil SSMS.

Anda dapat membagikan tip favorit Anda terkait dengan fungsi SQL SUM. Anda dipersilakan untuk menggunakan bagian Komentar.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memperbarui Data Salesforce dengan Kursor SQL Server

  2. Apakah mungkin untuk klausa Output SQL untuk mengembalikan kolom yang tidak dimasukkan?

  3. Menggunakan Penyimpanan Intel Optane untuk SQL Server

  4. SQL Server AlwaysOn Availability Groups:Instalasi dan konfigurasi, Bagian 2

  5. ExecuteNonQuery mengembalikan -1 saat menggunakan sql COUNT meskipun ada string kueri