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.