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

Cara Mengembalikan Jumlah Baris dalam Hasil Query di SQL Server

Saat bekerja dengan database, terkadang Anda ingin mengetahui berapa banyak baris yang akan dikembalikan oleh kueri, tanpa benar-benar mengembalikan hasil kueri. Atau terkadang Anda mungkin hanya ingin mengetahui berapa banyak baris dalam tabel tertentu.

Di SQL Server, Anda dapat menggunakan T-SQL COUNT() berfungsi untuk mengembalikan jumlah baris yang akan dikembalikan dalam kueri.

Data

Berikut data yang akan kami gunakan dalam contoh di halaman ini:

PILIH *FROM Tugas;

Hasil:

TaskId TaskName TaskDescription TaskCode------ ------------ --------------- --------1 Feed kucing TBA null 2 ​​Anjing air TBA null 3 Memberi makan taman TBA null 4 Cat karpet TBA null 5 Membersihkan atap TBA null 6 Memberi makan kucing TBA null 

Contoh – Hitung Semua Baris dalam Tabel

Berikut ini contoh penggunaan COUNT() fungsi untuk mengembalikan jumlah total baris dalam sebuah tabel:

PILIH JUMLAH(*)FROM Tugas;

Hasil:

6 

Ini mengembalikan jumlah baris dalam tabel karena kami tidak memberikan kriteria apa pun untuk mempersempit hasil.

Contoh – Menambahkan Kriteria

Berikut adalah contoh penghitungan berapa banyak baris yang akan dikembalikan berdasarkan kriteria yang diberikan:

SELECT COUNT(*)FROM TasksWHERE TaskName LIKE '%dog%' OR TaskName LIKE '%cat%';

Hasil:

3

Contoh – Tentukan Satu Kolom

Contoh sebelumnya semua menggunakan tanda bintang untuk menerapkan hitungan ke semua kolom. Anda juga memiliki opsi untuk menentukan kolom tertentu.

Contoh:

PILIH JUMLAH(NamaTugas)FROM Tugas;

Hasil:

6

Meskipun contoh ini mengembalikan hasil yang sama seperti yang kita dapatkan saat menggunakan tanda bintang, itu tidak selalu akan menjadi kasusnya. Misalnya, inilah yang terjadi jika kita menentukan kolom yang berbeda:

PILIH JUMLAH(Kode Tugas)FROM Tugas;

Hasil:

0

Dalam hal ini kita mendapatkan nol, karena kolom tersebut berisi nilai nol di setiap baris.

Contoh – Berbeda

Anda dapat menambahkan DISTINCT argumen untuk mengembalikan hanya jumlah nilai unik (nonnull).

Anda mungkin memperhatikan bahwa setiap baris di TaskDescription our kami kolom berisi nilai yang sama (“TBA”). Dan TaskName kolom juga memiliki nilai duplikat ("Umpan kucing" muncul dua kali). Ini dapat menyebabkan masalah jika Anda tidak ingin duplikat dihitung.

Begini tampilannya jika kita menerapkan DISTINCT argumen ke TaskName kolom:

SELECT COUNT(DISTINCT TaskName)FROM Tasks;

Hasil:

5

Dan di sini diterapkan terhadap TaskDescription tabel (dengan semua nilai identik):

SELECT COUNT(DISTINCT TaskDescription)FROM Tasks;

Hasil:

1

Contoh – Klausa HAVING

Anda juga dapat menggunakan COUNT() dengan HAVING klausa untuk membatasi kumpulan hasil berdasarkan jumlah baris yang akan dikembalikan.

Contoh:

GUNAKAN Musik;SELECT ar.ArtistName, COUNT(al.AlbumName) 'Album Count'FROM Artists arINNER JOIN Albums al ON ar.ArtistId =al.ArtistIdGROUP BY ar.ArtistNameHAVING COUNT(al.AlbumName)> 1; 

Hasil:

ArtistName Album Hitungan------------------------- -----------Allan Holdsworth 2 Devin Townsend 3 Iron Maiden 5 Michael Belajar Mengguncang 3 Tom Jones 3

Contoh ini menggunakan database yang berbeda dari contoh sebelumnya. Ini hanya mengembalikan artis yang telah merilis lebih dari 1 album. Kami dapat mengubah jumlah album sebanyak yang kami inginkan:

GUNAKAN Musik;SELECT ar.ArtistName, COUNT(al.AlbumName) 'Album Count'FROM Artists arINNER JOIN Albums al ON ar.ArtistId =al.ArtistIdGROUP BY ar.ArtistNameHAVING COUNT(al.AlbumName)> 4; 

Hasil:

Jumlah Album ArtisNama------------------------- -----------Iron Maiden 5

Fungsi COUNT_BIG()

T-SQL juga memiliki COUNT_BIG() fungsi yang bekerja persis seperti COUNT() , kecuali COUNT() mengembalikan int tipe data dan COUNT_BIG() mengembalikan besar tipe data.

Fungsi ini dapat berguna untuk tampilan yang diindeks dengan kueri yang dikelompokkan. Anda mungkin menemukan jika Anda mencoba membuat indeks untuk tampilan yang berisi COUNT(*) , bahwa Anda mendapatkan kesalahan seperti ini:

Tidak dapat membuat indeks pada tampilan "Music.dbo.AlbumsByArtist" karena menggunakan COUNT agregat. Gunakan COUNT_BIG sebagai gantinya.

Dalam kasus seperti itu, mengubah tampilan untuk menggunakan COUNT_BIG(*) harus menyelesaikan masalah.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:Temukan nilai default kolom dengan kueri

  2. Tutorial Surat Basis Data

  3. Bagaimana cara membuat kunci komposit dengan SQL Server Management Studio?

  4. Hanya satu ekspresi yang dapat ditentukan dalam daftar pilih ketika subquery tidak diperkenalkan dengan EXISTS

  5. STRING_SPLIT() di SQL Server 2016 :Tindak Lanjut #1