-- 1. SubQuery
SELECT nm, v
FROM t
WHERE v = (SELECT MAX(v) FROM t WHERE v <= :v)
;
-- 2. Order By & Rownum = 1
SELECT *
FROM (SELECT nm, v
FROM t
WHERE v <= :v
ORDER BY v DESC
)
WHERE ROWNUM = 1
;
-- 3. Row_number = 1
SELECT nm, v
FROM (SELECT nm, v
, ROW_NUMBER() OVER(ORDER BY v DESC) rn
FROM t
WHERE v <= :v
ORDER BY v DESC
)
WHERE rn = 1
;
-- 4. MAX, Keep
SELECT MAX(nm) KEEP(DENSE_RANK LAST ORDER BY v) nm
, MAX(v)
FROM t
WHERE v <= :v
;