sql >> Databasteknik >  >> RDS >> SQLite

Hur SQLite Count() fungerar

SQLite count() funktionen kan användas för att returnera antalet rader i en resultatuppsättning.

Den kan också användas för att returnera antalet gånger en given kolumn inte är NULL i resultatuppsättningen.

Den kan användas på två sätt. Om du anger asterisken (* ) jokertecken, kommer det att returnera det totala antalet rader i gruppen. Om du anger namnet på en kolumn kommer den att returnera antalet gånger den kolumnen inte är NULL.

Syntax

Syntaxen ser ut så här:

count(X)
count(*)

Så i det här fallet, X kan vara namnet på en kolumn och asterisken (* ) jokertecken används för att ange det totala antalet rader i gruppen.

Exempel:count(*)

Här är ett grundläggande exempel för att visa asterisk (*)-syntaxen för att returnera antalet rader i en tabell.

SELECT count(*) FROM Customer;

Resultat:

59

Jag körde den här frågan på Chinook-exempeldatabasen, och så visar det sig att det finns 59 rader i Kund bord.

Exempel:count(X)

I det här exemplet skickar jag namnet på en specifik kolumn i tabellen.

SELECT count(Fax) FROM Customer;

Resultat:

12

I det här fallet, Fax kolumnen har 12 icke-NULL-värden.

Med andra ord innehåller 47 rader ett NULL-värde i Fax kolumn.

Använda en WHERE-klausul

Resultatet av count() beräknas efter någon WHERE klausuler.

SELECT count(Fax) 
FROM Customer 
WHERE CustomerId <= 5;

Resultat:

2

I det här fallet fanns det bara två icke-NULL-värden i Fax kolumn i resultatuppsättningen.

Så här ser resultaten ut med returnerade kolumner (och utan att använda count() funktion).

SELECT CustomerId, Fax 
FROM Customer 
WHERE CustomerId <= 5;

Resultat:

CustomerId  Fax               
----------  ------------------
1           +55 (12) 3923-5566
2                             
3                             
4                             
5           +420 2 4172 5555  

Så vi kan se att endast raderna 1 och 5 har icke-NULL-värden i Fax kolumn.

Med en LIMIT-klausul

Resultatet beräknas inte efter någon LIMIT klausul.

SELECT count(Fax) 
FROM Customer 
LIMIT 5;

Resultat:

12

Men du kan göra något så här istället:

SELECT count(Fax) 
FROM (SELECT Fax FROM Customer 
LIMIT 5);

Resultat:

2

Grupperade resultat

Ett praktiskt användningsfall för count() är att använda den i kombination med GROUP BY sats, så att flera rader returneras – var och en representerar en grupp – med ett antal rader i den gruppen.

Här är ett exempel.

SELECT 
  ar.Name, 
  count(al.Title)
FROM Album al
INNER JOIN Artist ar
ON ar.ArtistId = al.ArtistId
WHERE ar.Name LIKE 'D%'
GROUP BY ar.Name
LIMIT 10;

Resultat:

Name             count(al.Title)
---------------  ---------------
David Coverdale  1              
Deep Purple      11             
Def Leppard      1              
Dennis Chambers  1              
Djavan           2              
Dread Zeppelin   1              

Det DISTINKTA sökordet

Du kan lägga till DISTINCT nyckelord för att endast räkna distinkta värden. Du kan med andra ord ta bort dubbletter av värden i beräkningen.

För exempel på detta se Hur man tar bort dubbletter från SQLite Count()-resultat.


  1. Virtualmin:Du har inte tillgång till den här MySQL-databasen efter att ha ändrat lösenord

  2. Hur man beräknar skillnaden mellan två tidsstämplar i SQLite

  3. Oracles åldersberäkning från födelsedatum och idag

  4. PGLogical 1.1-paket för PostgreSQL 9.6beta1