Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak zwrócić liczbę wierszy w wyniku zapytania w SQL Server

Podczas pracy z bazami danych czasami chcesz dowiedzieć się, ile wierszy zostanie zwróconych przez zapytanie, bez faktycznego zwracania wyników zapytania. Czasami możesz po prostu chcieć dowiedzieć się, ile wierszy znajduje się w danej tabeli.

W SQL Server możesz użyć funkcji COUNT() T-SQL funkcja zwracająca liczbę wierszy, które zostaną zwrócone w zapytaniu.

Dane

Oto dane, których użyjemy w przykładach na tej stronie:

SELECT *FROM Zadania;

Wynik:

IdZadania NazwaZadania OpisZadania KodZadania------ ------------ --------------- --------1 Kanał koty TBA brak 2 Pies wodny TBA brak 3 Pasza TBA brak 4 Dywan z farbą TBA brak 5 Czysty dach TBA brak 6 Nakarmienie kotów TBA brak 

Przykład – policz wszystkie wiersze w tabeli

Oto przykład użycia COUNT() funkcja zwracająca całkowitą liczbę wierszy w tabeli:

SELECT COUNT(*)FROM zadań;

Wynik:

6 

Zwraca to liczbę wierszy w tabeli, ponieważ nie podaliśmy żadnych kryteriów do zawężenia wyników.

Przykład – dodawanie kryteriów

Oto przykład zliczania, ile wierszy zostanie zwróconych na podstawie podanych kryteriów:

SELECT COUNT(*)FROM ZadaniaWHERE Nazwa zadania LIKE '%dog%' OR Nazwa zadania LIKE '%cat%';

Wynik:

3

Przykład — określ pojedynczą kolumnę

Wszystkie poprzednie przykłady używają gwiazdki, aby zastosować liczbę do wszystkich kolumn. Masz również możliwość określenia konkretnej kolumny.

Przykład:

SELECT COUNT(Nazwa zadania)FROM zadań;

Wynik:

6

Chociaż ten przykład zwraca ten sam wynik, który otrzymaliśmy, gdy użyliśmy gwiazdki, niekoniecznie zawsze tak będzie. Na przykład, oto co się stanie, jeśli określimy inną kolumnę:

SELECT COUNT(TaskCode)FROM Zadania;

Wynik:

0

W tym przypadku otrzymujemy zero, ponieważ ta konkretna kolumna zawiera wartości null w każdym wierszu.

Przykład – wyraźny

Możesz dodać DISTINCT argument zwracający tylko liczbę unikalnych (niepustych) wartości.

Być może zauważyłeś, że każdy wiersz w naszym TaskDescription kolumna zawiera tę samą wartość („TBA”). Oraz TaskName kolumna ma również zduplikowaną wartość („Nakarm koty” pojawia się dwukrotnie). Może to powodować problemy, jeśli nie chcesz, aby duplikaty były liczone.

Oto, jak to wygląda, gdy zastosujemy DISTINCT argument do TaskName kolumna:

SELECT COUNT(DISTINCT NazwaZadania)FROM Zadania;

Wynik:

5

I tutaj jest stosowany wobec TaskDescription tabela (w której wszystkie wartości są identyczne):

SELECT COUNT(DISTINCT TaskDescription)FROM Zadania;

Wynik:

1

Przykład – Klauzula MIEĆ

Możesz także użyć COUNT() z HAVING klauzula ograniczająca zestaw wyników na podstawie liczby wierszy, które zostaną zwrócone.

Przykład:

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

Wynik:

ArtistName Liczba albumów------------------------- -----------Allan Holdsworth 2 Devin Townsend 3 Iron Maiden 5 Michael uczy się rocka 3 Tom Jones 3

W tym przykładzie użyto innej bazy danych niż w poprzednich przykładach. Zwraca tylko tych artystów, którzy wydali więcej niż 1 album. Możemy zmienić tę liczbę niezależnie od liczby albumów:

USE Music;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; 

Wynik:

ArtistName Liczba albumów----------------------------- -----------Iron Maiden 5

Funkcja COUNT_BIG()

T-SQL ma również funkcję COUNT_BIG() funkcja, która działa dokładnie jak COUNT() , z wyjątkiem tego, że COUNT() zwraca int typ danych i COUNT_BIG() zwraca duży typ danych.

Ta funkcja może być przydatna w przypadku widoków indeksowanych z pogrupowanymi zapytaniami. Możesz znaleźć, jeśli spróbujesz utworzyć indeks dla widoku zawierającego COUNT(*) , pojawia się następujący błąd:

Nie można utworzyć indeksu w widoku „Music.dbo.AlbumsByArtist”, ponieważ używa zagregowanego COUNT. Zamiast tego użyj COUNT_BIG.

W takich przypadkach zmiana widoku tak, aby używał COUNT_BIG(*) powinien rozwiązać problem.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LOG() Przykłady w SQL Server

  2. Jakie jest znaczenie 1/1/1753 w SQL Server?

  3. Jak zmienić sortowanie bazy danych SQL Server za pomocą T-SQL

  4. In-Memory OLTP:Co nowego w SQL Server 2016

  5. 6 funkcji do pobrania dnia, miesiąca i roku z daty w SQL Server