sql >> Databasteknik >  >> RDS >> SQLite

Hur man lägger till just de distinkta värdena med SQLite Sum()

I SQLite, Sum() funktionen accepterar en valfri DISTINCT nyckelord som gör att du bara kan lägga till de distinkta värdena i gruppen. Det vill säga att den tar bort alla dubbletter från sin beräkning.

Så om det finns tre rader som innehåller 10, kommer bara en av dessa rader att inkluderas i resultaten.

Syntax

Syntaxen när du använder DISTINCT nyckelordet ser ut så här:

Sum(DISTINCT X)

Där X är namnet på kolumnen för vilka värden du lägger till.

Exempel

Tänk på följande tabell som heter Products :

ProductId   ProductName    Price     
----------  -------------  ----------
1           Widget Holder  139.5     
2           Blue Widget    10.0      
3           Red Widget     10.0      
4           Green Widget   10.0      
5           Widget Stick   89.75     
6           Foo Cap        11.99     

Nedan är ett exempel på att få den distinkta summan av alla priser.

SELECT Sum(DISTINCT Price) 
FROM Products;

Resultat:

251.24

Här är den igen, men den här gången inkluderar jag också en "icke-distinkt" sum() för jämförelsens skull.

SELECT 
  Sum(Price),
  Sum(DISTINCT Price) 
FROM Products;

Resultat:

Sum(Price)  Sum(DISTINCT Price)
----------  -------------------
271.24      251.24             

Alltså den icke-särskiljande sum(Price) lagt till alla värden oavsett dubbletter. Men sum(DISTINCT Price) lade bara till de distinkta värdena.


  1. Tips för att trimma prestanda för PostgreSQL

  2. Använda Jenkins med Kubernetes AWS, del 1

  3. Exportera och importera alla MySQL-databaser på en gång

  4. Skapa ett Excel-kalkylblad från en Oracle-databas