SQLite min()
funkcja zwraca minimalną wartość różną od NULL ze wszystkich wartości w grupie.
Minimalna wartość to wartość, która pojawiłaby się jako pierwsza w zapytaniu używającym ORDER BY
klauzula w tej samej kolumnie.
Przykład
Oto przykład do zademonstrowania.
SELECT min(Price) FROM Products;
Wynik:
89.27
Oto zapytanie, które zwraca wszystkie wiersze w tej tabeli.
SELECT * FROM Products
ORDER BY Price;
Wynik:
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
Zauważ, że pierwszy wiersz ma wartość NULL dla ceny. min()
funkcja ignoruje to i używa minimalnej wartości innej niż NULL.
Połącz Min() z Count()
Oto przykład, który łączy min()
funkcja z count()
funkcja zwracająca minimalną liczbę.
SELECT min(AlbumCount)
FROM (SELECT ArtistId, count(Title) AS AlbumCount
FROM Album
GROUP BY ArtistId);
Wynik:
1
Możemy to zweryfikować, uruchamiając inne zapytanie z ORDER BY
klauzula.
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 ASC
LIMIT 3;
Wynik:
Name AlbumCount ------------------------------ ---------- Aaron Copland & London Symphon 1 Aaron Goldberg 1 Academy of St. Martin in the F 1
Połącz z Max() i Avg()
Oto kolejny przykład, w którym dodaję max()
i avg()
funkcje do miksu.
SELECT
min(AlbumCount),
max(AlbumCount),
avg(AlbumCount)
FROM (SELECT ArtistId, count(Title) AS AlbumCount
FROM Album
GROUP BY ArtistId);
Wynik:
min(AlbumCount) max(AlbumCount) avg(AlbumCount) --------------- --------------- ---------------- 1 21 1.70098039215686
Używanie Min() na ciągach
Jak wspomniano, min()
zwraca wartość, która byłaby zwrócona jako pierwsza przy użyciu ORDER BY
klauzula (zakładając, że używa domyślnej kolejności rosnącej).
Ta sama koncepcja dotyczy ciągów.
SELECT min(ProductName) FROM Products;
Wynik:
Blue Widgets (6 Pack)
Możemy zweryfikować ten wynik za pomocą zapytania przy użyciu ORDER BY
klauzula.
SELECT * FROM Products
ORDER BY ProductName;
Wynik:
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