sql >> Databáze >  >> RDS >> SQLite

Vylaďte své výsledky Avg() v SQLite pomocí klíčového slova DISTINCT

Pokud víte o avg() funkce v SQLite, pravděpodobně víte, že vrací průměr všech jiných než NULL X v rámci skupiny.

Ale věděli jste, že můžete přidat DISTINCT klíčové slovo pro tuto funkci?

Pokud přidáte DISTINCT klíčové slovo, avg() vypočítá své výsledky pouze na základě odlišných hodnot. To je v podstatě stejné jako odstranění duplicitních hodnot a pak výpočet průměru ze zbývajících hodnot.

Syntaxe

Chcete-li použít DISTINCT klíčové slovo, jednoduše jej vložíte jako první argument.

Takhle:

avg(DISTINCT X)

Kde X je název sloupce, pro který počítáte průměr.

Příklad

Vezměte si následující tabulku nazvanou 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     

Pokud spustím normální avg() ve sloupci Cena:

SELECT avg(Price) FROM Products;

Zde je to, co dostanu:

45.2066666666667

Ale když spustím DISTINCT dotaz:

SELECT avg(DISTINCT Price) FROM Products;

Chápu toto:

62.81

Takže v tomto případě to dost podstatně mění výsledek.

Aby bylo jasno, tady jsou vedle sebe:

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

Výsledek:

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

Jak si pravděpodobně dokážete představit, pomocí DISTINCT klíčové slovo s avg() může výrazně zkreslit výsledky, zvláště pokud je na jednom konci rozsahu mnoho duplikátů, ale na druhém konci není mnoho duplikátů.


  1. Funkce ATAN() v Oracle

  2. Přehled kompilace Just-in-Time (JIT) pro PostgreSQL

  3. Jak povolit režim protokolování archivace v databázi Oracle 19c

  4. Použití příkazu IF v dotazu MySQL SELECT