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

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

SQLite max() функцията връща максималната стойност от всички стойности в група.

Максималната стойност е стойността, която ще се появи последна в заявка, която използва ORDER BY клауза в същата колона.

Пример

Ето пример за демонстрация.

SELECT max(Price) FROM Products;

Резултат:

389.45

Ето заявка, която връща всички редове в тази таблица.

SELECT * FROM Products 
ORDER BY Price;

Резултат:

ProductId   ProductName  Price     
----------  -----------  ----------
5           Red Widget             
3           Widget Open  89.27     
4           Foobar Set   120.0     
2           Widget Hold  139.5     
1           Blue Widget  389.45    

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

Използвах ORDER BY клауза в този пример. Както споменахме, max() функцията връща стойността, която се появява последна при използване на тази клауза (ако приемем, че подреждате колоната във възходящ ред, което е по подразбиране).

Само за да е ясно, можех да използвам следното за същия резултат:

SELECT * FROM Products 
ORDER BY Price ASC;

Комбинирайте Max() с Count()

Ето пример, който комбинира max() функция с count() функция за връщане на максималния брой.

SELECT max(AlbumCount) 
FROM (SELECT ArtistId, count(Title) AS AlbumCount
FROM Album
GROUP BY ArtistId);

Резултат:

21       

Можем да проверим това, като изпълним друга заявка с ORDER BY клауза.

SELECT 
  ar.Name, 
  count(al.Title) AS AlbumCount
FROM Album al
INNER JOIN Artist ar
ON ar.ArtistId = al.ArtistId
GROUP BY ar.Name
ORDER BY AlbumCount DESC
LIMIT 10;

Резултат:

Name                  AlbumCount
--------------------  ----------
Iron Maiden           21        
Led Zeppelin          14        
Deep Purple           11        
Metallica             10        
U2                    10        
Ozzy Osbourne         6         
Pearl Jam             5         
Faith No More         4         
Foo Fighters          4         
Lost                  4                

Работа с NULL стойности

Както споменахме, ако в групата няма стойности, различни от NULL (т.е. всички стойности са NULL), тогава max() връща NULL.

SELECT 
  max(123),
  max(NULL);

Резултат:

max(123)    max(NULL) 
----------  ----------
123                   

Използване на Max() върху низове

Както споменахме, max() връща стойността, която би била върната последна с помощта на ORDER BY клауза (ако приемем, че използва възходящ ред по подразбиране).

Същата концепция се отнася и за низовете.

SELECT max(ProductName) FROM Products;

Резултат:

Widget Opener

Така че не връща низа с максимално количество знаци или нещо подобно.

Можем да проверим този резултат със заявка, използвайки ORDER BY клауза.

SELECT * FROM Products 
ORDER BY ProductName;

Резултат:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Най-добрата практика за внедряване на защитена база данни за устройство с Android

  2. Сумиране на стойностите по месеци в милисекунди

  3. Добавете дни към дата в SQLite

  4. Как да настроите всеки елемент, извлечен от базата данни на SQLite, в собствен Textview

  5. SQLite JSON_GROUP_ARRAY()