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

Как работи SQLite Avg().

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

Той приема един аргумент, който е стойността или групата стойности.

Пример

Вземете следната таблица:

ProductId   ProductName            Price     
----------  ---------------------  ----------
1           Blue Widgets (6 Pack)  389.45    
2           Widget Holder          139.5     
3           Widget Opener          89.27     
4           Foobar Set             120.0     

Можем да използваме avg() функция, за да получите средната стойност от Цена колона. Като това:

SELECT avg(Price) FROM Products;

Резултат:

184.555

Как клауза WHERE влияе върху резултата

Ако вашата заявка използва WHERE клауза, средната стойност ще бъде изчислена след WHERE клаузата е влязла в сила. С други думи, можете да използвате WHERE клауза, за да се гарантира, че avg() функцията изчислява само тези редове, които ви интересуват.

Ето какво се случва, ако добавя WHERE клауза към предишния пример.

SELECT avg(Price) 
FROM Products
WHERE ProductName LIKE '%widget%';

Резултат:

206.073333333333

Закръглете резултата

Резултатът се връща като стойност с плаваща запетая (освен ако не е NULL). Можете да използвате round() функция за закръгляване на стойността според изискванията.

SELECT round(avg(Price), 2)
FROM Products
WHERE ProductName LIKE '%widget%';

Резултат:

206.07

Ограничаване на резултатите

LIMIT клаузата не засяга изчисляването на avg() функция – само един ред се връща с avg() функционира така или иначе.

SELECT avg(Price) 
FROM Products
LIMIT 1;

Резултат:

184.555

Въпреки това, предоставянето на ограничение от нула няма да доведе до връщане на нищо.

Стрингове и BLOB

Стойности на низ и BLOB, които не изглеждат като числа, се интерпретират като 0.

SELECT avg(ProductName) FROM Products;

Резултат:

0.0

NULL аргументи

Ако няма входове, различни от NULL, функцията avg() връща NULL.

SELECT avg(NULL);

Резултат:

 

(Този резултат е NULL).

Ако обаче има поне един аргумент, различен от NULL, той няма да върне NULL.

За да демонстрирам това, тук ще вмъкна нов ред, но ще оставя Цена колона на NULL:

INSERT INTO Products (ProductId, ProductName) 
VALUES (5, 'Red Widget');
SELECT * FROM Products;

Резултат:

ProductId   ProductName            Price     
----------  ---------------------  ----------
1           Blue Widgets (6 Pack)  389.45    
2           Widget Holder          139.5     
3           Widget Opener          89.27     
4           Foobar Set             120.0     
5           Red Widget                       

Така че последният ред няма цена – Цена колоната е NULL.

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

SELECT avg(Price) FROM Products;

Резултат:

184.555

Ключовата дума DISTINCT

Можете да използвате DISTINCT ключова дума, за да се изчисли средната стойност само на отделните стойности в колоната. Това води до премахване на всички дублиращи се стойности от изчислението.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Таблицата не се създава sqlite android

  2. Ограниченията на SQLite CHECK

  3. Върнете списък с външни ключове в SQLite

  4. Как да възстановите базата данни на Sqlite след архивиране на Android

  5. Android:Как да се присъедините към дъщерната таблица с родителската таблица Sqlite