sql >> Databasteknik >  >> RDS >> SQLite

Justera dina Avg()-resultat i SQLite med nyckelordet DISTINCT

Om du känner till avg() funktion i SQLite är du förmodligen medveten om att den returnerar genomsnittet av alla icke-NULL X inom en grupp.

Men visste du att du kan lägga till DISTINCT nyckelord till den här funktionen?

Om du lägger till DISTINCT nyckelord, avg() beräknar endast sina resultat baserat på distinkta värden. Detta är i huvudsak samma sak som att ta bort dubbletter av värden och sedan beräkna medelvärdet av de återstående värdena.

Syntax

För att använda DISTINCT nyckelord, sätter du helt enkelt in det som det första argumentet.

Så här:

avg(DISTINCT X)

Där X är kolumnnamnet som du beräknar genomsnittet för.

Exempel

Ta 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     

Om jag kör en normal avg() i kolumnen Pris:

SELECT avg(Price) FROM Products;

Det här är vad jag får:

45.2066666666667

Men om jag kör en DISTINCT fråga:

SELECT avg(DISTINCT Price) FROM Products;

Jag förstår detta:

62.81

Så i det här fallet förändrar det resultatet ganska avsevärt.

Bara för att vara tydlig, här är de sida vid sida:

SELECT 
 avg(Price) AS "Non-Distinct",
 avg(DISTINCT Price) AS "Distinct"
FROM Products;

Resultat:

Non-Distinct      Distinct  
----------------  ----------
45.2066666666667  62.81     

Som du säkert kan föreställa dig använder du DISTINCT nyckelord med avg() kan förvränga resultaten enormt, speciellt om det finns många dubbletter i ena änden av intervallet, men inte många dubbletter i andra änden.


  1. 4 sätt att hitta rader som innehåller versaler i MariaDB

  2. SQL-uppdateringsfråga med joins

  3. FEL:kunde inte ladda biblioteket "/opt/PostgreSQL/9.0/lib/postgresql/plperl.so":libperl.so:

  4. Utmaningar med att skala Moodle PostgreSQL-databasen