Sử dụng một hàm phân tích
SELECT value
FROM (SELECT value,
dense_rank() over (order by value asc) rnk
FROM table)
WHERE rnk = 2
Các hàm phân tích RANK
, DENSE_RANK
và ROW_NUMBER
giống hệt nhau ngoại trừ cách chúng xử lý các mối quan hệ. RANK
sử dụng quy trình bẻ dây kiểu thể thao để nếu hai hàng hòa cho thứ hạng là 1, thì hàng tiếp theo có thứ hạng là 3. DENSE_RANK
cung cấp cho cả hai hàng được ràng buộc ở vị trí đầu tiên xếp hạng là 1 và sau đó gán cho hàng tiếp theo thứ hạng là 2. ROW_NUMBER
tự ý bẻ dây buộc và cho một trong hai hàng có giá trị thấp nhất xếp hạng 1 và hàng còn lại xếp hạng 2.