簡體   English   中英

按使用情況分區的行號

[英]Row number over partition by usage

我想根據周列過濾下表,但僅當年周組合為最大值時。

在下面的示例中,我希望我的 output 僅包含 2022 年和第 1 周的 select 行,因為這是最新的年周組合。

我正在考慮在分區依據上使用行號,但沒有成功。

Car  colour   year   week
aaa  red      2021   52
aaa  black    2021   51
bbb  red      2022   1
bbb  yellow   2022   1

來自 Oracle 12,您可以使用:

SELECT *
FROM   table_name
ORDER BY year DESC, week DESC
FETCH FIRST ROW WITH TIES;

或者,在早期版本中,您可以使用:

SELECT car, colour, year, week
FROM   (
  SELECT t.*,
         RANK() OVER (ORDER BY year DESC, week DESC) AS rnk
  FROM   table_name t
)
WHERE  rnk = 1;

其中,對於示例數據:

CREATE TABLE table_name (Car, colour, year, week) AS
SELECT 'aaa', 'red',    2021, 52 FROM DUAL UNION ALL
SELECT 'aaa', 'black',  2021, 51 FROM DUAL UNION ALL
SELECT 'bbb', 'red',    2022,  1 FROM DUAL UNION ALL
SELECT 'bbb', 'yellow', 2022,  1 FROM DUAL;

兩者都是 output:

顏色 星期
bbb 紅色的 2022年 1個
bbb 黃色 2022年 1個

db<> 在這里擺弄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM