oracle 选择每个标准的X行

4zcjmb1e  于 2023-01-16  发布在  Oracle
关注(0)|答案(1)|浏览(107)

我可以根据一些标准(如特定列中数据的长度)来计算记录数,但似乎我可以得到前X条记录(比如20条记录),而且它们的长度可能都相同。
如何获得每种长度的20条记录?

SELECT LABEL_ID, DEST, WEIGHT_OZ 
FROM MYTABLE
WHERE
LENGTH(LABEL_ID) IN (10,13,24)
AND ROWNUM <= 20;

这将返回长度为10的标签的20条记录(因为该长度的记录超过20条)。如何获得长度为10的20条记录、长度为13的20条记录、长度为24的20条记录等?
谢谢。

eivgtgni

eivgtgni1#

由一个岗位here协助

WITH rws AS (
    SELECT o.LABEL_ID, o.DEST, o.WEIGHT_OZ,
    ROW_NUMBER () OVER (
        PARTITION BY LENGTH(LABEL_ID)
        ORDER BY SOME_DATE_COLUMN DESC
    ) rn
    FROM MYTABLE o
    WHERE LENGTH(LABEL_ID) IN (10,13,24)
)
SELECT LABEL_ID, DEST, WEIGHT_OZ
FROM rws 
WHERE rn <= 20
ORDER BY LENGTH(LABEL_ID), SOME_DATE_COLUMN DESC;

相关问题