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

Jak funguje SQLite Max()

SQLite max() Funkce vrací maximální hodnotu ze všech hodnot ve skupině.

Maximální hodnota je hodnota, která se zobrazí jako poslední v dotazu, který používá ORDER BY klauzule ve stejném sloupci.

Příklad

Zde je příklad k demonstraci.

SELECT max(Price) FROM Products;

Výsledek:

389.45

Zde je dotaz, který vrátí všechny řádky v této tabulce.

SELECT * FROM Products 
ORDER BY Price;

Výsledek:

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    

Všimněte si, že první řádek má pro cenu hodnotu NULL. max() funkce to ignoruje, protože ostatní řádky mají hodnoty jiné než NULL. Pokud byly všechny řádky NULL, pak max() vrátí NULL.

Použil jsem ORDER BY klauzule v tomto příkladu. Jak již bylo zmíněno, max() funkce vrátí hodnotu, která se při použití této klauzule zobrazí jako poslední (za předpokladu, že sloupec seřadíte vzestupně, což je výchozí nastavení).

Aby bylo jasno, pro stejný výsledek jsem mohl použít následující:

SELECT * FROM Products 
ORDER BY Price ASC;

Kombinovat Max() s Count()

Zde je příklad, který kombinuje max() funkce s count() funkce vrátí maximální počet.

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

Výsledek:

21       

Můžeme to ověřit spuštěním dalšího dotazu s ORDER BY doložka.

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;

Výsledek:

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                

Zacházení s hodnotami NULL

Jak již bylo zmíněno, pokud ve skupině nejsou žádné hodnoty než NULL (tj. všechny hodnoty jsou NULL), pak max() vrátí NULL.

SELECT 
  max(123),
  max(NULL);

Výsledek:

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

Použití Max() na řetězcích

Jak již bylo zmíněno, max() vrátí hodnotu, která by byla vrácena jako poslední pomocí ORDER BY klauzule (za předpokladu, že používá výchozí vzestupné pořadí).

Stejný koncept platí pro řetězce.

SELECT max(ProductName) FROM Products;

Výsledek:

Widget Opener

Nevrací tedy řetězec s maximálním počtem znaků ani nic podobného.

Tento výsledek můžeme ověřit dotazem pomocí ORDER BY doložka.

SELECT * FROM Products 
ORDER BY ProductName;

Výsledek:

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. Jak migrovat z Oracle DB na MariaDB

  2. Převést „datetimeoffset“ na „date“ v SQL Server (příklady T-SQL)

  3. 3 způsoby, jak zpřístupnit kolace v MariaDB

  4. Vypočítané / vypočítané / virtuální / odvozené sloupce v PostgreSQL