SQLite
 sql >> база данни >  >> RDS >> SQLite

Настройте вашите Avg() резултати в SQLite с ключовата дума DISTINCT

Ако знаете за avg() функция в SQLite, вероятно сте наясно, че връща средната стойност от всички не-NULL X в рамките на група.

Но знаете ли, че можете да добавите DISTINCT ключова дума за тази функция?

Ако добавите DISTINCT ключова дума, avg() ще изчисли своите резултати само въз основа на различни стойности. Това по същество е същото като премахване на дублиращи се стойности и след това изчисляване на средната стойност за останалите стойности.

Синтаксис

За да използвате DISTINCT ключова дума, просто я вмъквате като първи аргумент.

Като това:

avg(DISTINCT X)

Където X е името на колоната, за която изчислявате средната стойност.

Пример

Вземете следната таблица, наречена 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     

Ако стартирам нормален avg() в колоната Цена:

SELECT avg(Price) FROM Products;

Ето какво получавам:

45.2066666666667

Но ако стартирам DISTINCT заявка:

SELECT avg(DISTINCT Price) FROM Products;

Разбрах това:

62.81

Така че в този случай това променя резултата доста значително.

Само за да е ясно, ето ги един до друг:

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

Резултат:

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

Както вероятно можете да си представите, с помощта на DISTINCT ключова дума с avg() може значително да изкриви резултатите, особено ако има много дубликати в единия край на диапазона, но не много дублирани в другия край.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Показване на напредъка, докато doInbackground

  2. Функция SQLite Like() с примери

  3. SQLite - Създаване на база данни

  4. SQLiteStatement изпълнява SELECT / INSERT / DELETE / UPDATE

  5. Пулът за връзки за база данни '/data/data/msv_database.db' не можа да предостави връзка. Връзки:0 активни, 1 неактивни, 0 налични