【问题标题】:Oracle sql to query last N rows as rest of dividing by fixed valueOracle sql查询最后N行作为除以固定值的其余部分
【发布时间】:2022-11-25 03:22:32
【问题描述】:

假设是这样的:

   CREATE TABLE "PIPPO" (   "COLUMN1" number) );
   
   INSERT INTO PIPPO (COLUMN1) VALUES (1);
   INSERT INTO PIPPO (COLUMN1) VALUES (2);
   INSERT INTO PIPPO (COLUMN1) VALUES (3);
   INSERT INTO PIPPO (COLUMN1) VALUES (4);
   INSERT INTO PIPPO (COLUMN1) VALUES (5);
   INSERT INTO PIPPO (COLUMN1) VALUES (6);
   INSERT INTO PIPPO (COLUMN1) VALUES (7);
   INSERT INTO PIPPO (COLUMN1) VALUES (8);
   

是否存在一些“简单”的方法来 SELECT 查询表以获得最后 N 行,其中 N 是除以 3 的其余部分? 例如,对于这种情况,我想检索:

7
8

想象插入另一条记录

   INSERT INTO PIPPO (COLUMN1) VALUES (9);

对于这种情况,我想检索:

7
8
9

想象插入另一条记录

   INSERT INTO PIPPO (COLUMN1) VALUES (10);

对于这种情况,我只想检索:

10

任何想法?

【问题讨论】:

  • 最后的- 根据什么?
  • 按第 1 列排序
  • 但是“10”介于“1”和“2”之间。
  • 你是对的:)我会用数字列编辑......这样更好

标签: sql oracle


【解决方案1】:

让最里面的子查询返回要返回的行数。使用 FETCH FIRST 获取该行数:

select * from
(
    select * from PIPPO 
    order by COLUMN1 desc
    fetch first (select mod(count(*)-1, 3) + 1 from PIPPO) rows only
) dt
order by COLUMN1 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多