Đầu tiên, hãy giả sử rằng bạn có một bảng với một cột giá trị. Bạn muốn lấy hàng có giá trị phân vị thứ 95. Nói cách khác, bạn đang tìm kiếm một giá trị lớn hơn 95 phần trăm của tất cả các giá trị.
Đây là một câu trả lời đơn giản:
SELECT * FROM
(SELECT t.*, @row_num :[email protected]_num + 1 AS row_num FROM YOUR_TABLE t,
(SELECT @row_num:=0) counter ORDER BY YOUR_VALUE_COLUMN)
temp WHERE temp.row_num = ROUND (.95* @row_num);