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.