Как я могу получить все строки со второй до последней даты? - PullRequest
0 голосов
/ 09 мая 2018

Я получил все строки за последнюю дату, например:

SELECT      date, quarter, sales_region, revenue
FROM        regions
WHERE       date = (SELECT MAX(date) FROM regions)
ORDER BY    1

Так как мне получить строки для второй последней даты?

Я пытался, но не повезло:

SELECT      MAX(date), quarter, sales_region, revenue
FROM        regions
WHERE       date < (SELECT MAX(date) FROM regions)
ORDER BY    1

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Гордон точно ответил на ваш вопрос, но если вы хотите получить записи за две последние даты в одном запросе, вы можете использовать IN вместо = и получить две верхние записи с помощью LIMIT 2:

SELECT date, quarter, sales_region, revenue
FROM regions
WHERE date IN (SELECT DISTINCT date
              FROM regions r2
              ORDER BY date DESC
              LIMIT 2)
ORDER BY 1;

Начиная с версии 8.4, вы также можете использовать FETCH FIRST 2 ROW ONLY вместо LIMIT 2.

0 голосов
/ 09 мая 2018

Вот один из методов:

SELECT date, quarter, sales_region, revenue
FROM regions
WHERE date = (SELECT DISTINCT date
              FROM regions r2
              ORDER BY date DESC
              OFFSET 1 FETCH FIRST 1 ROW ONLY
             )
ORDER BY 1;

Другой метод использует dense_rank():

select r.*
from (select r.*, dense_rank() over (order by date desc) as seqnum
      from regions r
     ) r
where seqnum = 2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...