SQLite max()
hàm trả về giá trị lớn nhất từ tất cả các giá trị trong một nhóm.
Giá trị lớn nhất là giá trị sẽ xuất hiện cuối cùng trong truy vấn sử dụng ORDER BY
mệnh đề trên cùng một cột.
Ví dụ
Đây là một ví dụ để chứng minh.
SELECT max(Price) FROM Products;
Kết quả:
389.45
Đây là một truy vấn trả về tất cả các hàng trong bảng đó.
SELECT * FROM Products
ORDER BY Price;
Kết quả:
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
Lưu ý rằng hàng đầu tiên có giá trị NULL cho giá. max()
hàm bỏ qua điều đó, vì các hàng khác có giá trị không phải NULL. Nếu tất cả các hàng đều là NULL, thì max()
sẽ trả về NULL.
Tôi đã sử dụng ORDER BY
mệnh đề trong ví dụ này. Như đã đề cập, max()
hàm trả về giá trị xuất hiện cuối cùng khi sử dụng mệnh đề này (giả sử bạn sắp xếp cột theo thứ tự tăng dần, đây là giá trị mặc định).
Chỉ cần nói rõ, tôi có thể đã sử dụng những thứ sau cho cùng một kết quả:
SELECT * FROM Products
ORDER BY Price ASC;
Kết hợp Max () với Count ()
Dưới đây là một ví dụ kết hợp max()
hàm với count()
hàm để trả về số lượng tối đa.
SELECT max(AlbumCount)
FROM (SELECT ArtistId, count(Title) AS AlbumCount
FROM Album
GROUP BY ArtistId);
Kết quả:
21
Chúng tôi có thể xác minh điều này bằng cách chạy một truy vấn khác với ORDER BY
mệnh đề.
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;
Kết quả:
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
Xử lý các giá trị NULL
Như đã đề cập, nếu không có giá trị nào không phải NULL trong nhóm (tức là tất cả các giá trị đều là NULL), thì max()
trả về NULL.
SELECT
max(123),
max(NULL);
Kết quả:
max(123) max(NULL) ---------- ---------- 123
Sử dụng Max () trên chuỗi
Như đã đề cập, max()
trả về giá trị sẽ được trả lại sau cùng bằng cách sử dụng ORDER BY
(giả sử nó đang sử dụng thứ tự tăng dần mặc định).
Khái niệm này cũng áp dụng cho chuỗi.
SELECT max(ProductName) FROM Products;
Kết quả:
Widget Opener
Vì vậy, nó không trả về chuỗi có số lượng ký tự tối đa hoặc bất kỳ thứ gì tương tự.
Chúng tôi có thể xác minh kết quả này bằng một truy vấn sử dụng ORDER BY
mệnh đề.
SELECT * FROM Products
ORDER BY ProductName;
Kết quả:
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