Я использую запрос, где часть его получает верхние 3 определенного столбца.
Создает отдельный подзапрос столбца, ограниченный 3-мя числом строк, а затем фильтрует эти строки в главном запросе, чтобы выполнить верхний 3.
WITH subquery AS (
SELECT col FROM (
SELECT DISTINCT col
FROM tbl
) WHERE ROWNUM <= 3
)
SELECT col
FROM tbl
WHERE tbl.col = subquery.col
Итак, исходная таблица выглядит так:
col
-----
a
a
a
b
b
b
c
d
d
e
f
f
f
f
И запрос возвращает верхние 3 столбца (не верхние 3 строки, которые были бы только a
):
col
-----
a
a
a
b
b
b
c
Я пытаюсь узнать, есть ли более правильный способ сделать это, так как реальный запрос велик и дублирует его размер с подзапросом, который выглядит почти так же, просто для того, чтобы получить топ-3, трудно работать и понимать /modify.
Есть ли лучший способ сделать первые 3 различных значения одного столбца в Oracle?