powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Максимальное значение
12 сообщений из 12, страница 1 из 1
Максимальное значение
    #39411514
lux7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Подскажите пожалуйста как взять строки с максимальным значением колонки даты (4 колонка)
к примеру есть
15080604; 169; "2014-11-25"; "2016-05-26" ;90;0.9167157361653635047923584;5
15080604; 169; "2014-11-25"; "2016-10-26" ;90;0.9167157361653635047923584;7776

Спавсибо.
...
Рейтинг: 0 / 0
Максимальное значение
    #39411526
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lux7,

Вы странно сформулировали вопрос.
Если нужна одна строка, то отсортируйте по колонке даты в порядке убывания, затем поставьте ограничение на 1 строку.
Если нужны несколько строк, то это уже группировка. Этот вопрос решается с помощью предложения DISTINCT ON.
...
Рейтинг: 0 / 0
Максимальное значение
    #39411558
lux7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за Ваш ответ. Уточню вопрос. Так как я новичек

15080604; 169; "2014-11-25";"2016-06-26";90;0.9167157361653635047923584;5324
15080604; 169; "2014-11-25";"2016-07-26";90;0.9167157361653635047923584;7776342
15080604; 169; "2014-11-25";"2016-08-26";90;0.9167157361653635047923584;523424
15080604; 169; "2014-11-25";" 2016-09-26 ";90;0.9167157361653635047923584;7776234
15080607; 169; "2014-11-25";"2016-05-26";90;0.9167157361653635047923584;524324
15080607; 169; "2014-11-25";"2016-06-26";90;0.9167157361653635047923584;7776243
15080607; 169; "2014-11-25";"2016-07-26";90;0.9167157361653635047923584;542342
15080607; 169; "2014-11-25";" 2016-08-26 ";90;0.9167157361653635047923584;77762342

нужно отфильтровать две строки с максимально приближенной датой по 4 колонке от сегодняшней (самую свежую)
что бы вышло

15080604; 169; "2014-11-25";"2016-09-26";90;0.9167157361653635047923584;7776234
15080607; 169; "2014-11-25";"2016-08-26";90;0.9167157361653635047923584;77762342

Спасибо!
...
Рейтинг: 0 / 0
Максимальное значение
    #39411709
RENO4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lux7,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select * from (
  select id, num, dt, x, row_number () over (order by current_date - dt) as rn
  from (
    values
      (15080604, 169, date '2016-06-26', 90),
      (15080604, 169, date '2016-07-26', 90),
      (15080604, 169, date '2016-08-26', 90),
      (15080604, 169, date '2016-09-26', 90)
  ) as sample (id, num, dt, x)
) t where rn < 3;


Так пойдет?
...
Рейтинг: 0 / 0
Максимальное значение
    #39411728
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RENO4,

а что помешало просто отсортировать и взять LIMIT 2?
...
Рейтинг: 0 / 0
Максимальное значение
    #39411729
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна,

Наверное, это на 2 порядка сложнее, чем LIMIT 1.
...
Рейтинг: 0 / 0
Максимальное значение
    #39411738
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина АннаRENO4,

а что помешало просто отсортировать и взять LIMIT 2?

что-то вроде такого:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with
sample as
  (select * 
    from (  values
              (15080604, 169, date '2016-06-26', 90),
              (15080604, 169, date '2016-07-26', 90),
              (15080604, 169, date '2016-08-26', 90),
              (15080604, 169, date '2016-09-26', 90)
         ) as sample (id, num, dt, x)
  )
--
select *
  from sample
  order by current_date - dt
  limit 2;
...
Рейтинг: 0 / 0
Максимальное значение
    #39411746
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А с учетом оригинальной постановки задачи от автора топика решение вообще могло выглядеть так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with
sample as
  (select * 
    from (  values
              (15080604, 169, date '2016-06-26', 90),
              (15080604, 169, date '2016-07-26', 90),
              (15080604, 169, date '2016-08-26', 90),
              (15080604, 169, date '2016-09-26', 90)
         ) as sample (id, num, dt, x)
  )
--
select *
  from sample
  order by dt DESC
  limit 2;
...
Рейтинг: 0 / 0
Максимальное значение
    #39411748
RENO4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина АннаRENO4,

а что помешало просто отсортировать и взять LIMIT 2?

Вы имеете в виду
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select *
from (
  values (15080604, 169, date '2016-06-26', 90),
  (15080604, 169, date '2016-07-26', 90),
  (15080604, 169, date '2016-08-26', 90),
  (15080604, 169, date '2016-09-26', 90)
) as sample (id, num, dt, x)
order by current_date - dt
limit 2;



Пишите код, не стесняйтесь. :-) Это же для топикстартера, а не для меня. Мне-то оно ни к чему. :-)
...
Рейтинг: 0 / 0
Максимальное значение
    #39411752
RENO4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопрос, что на самом деле нужно топикстартеру. :-)
...
Рейтинг: 0 / 0
Максимальное значение
    #39411761
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RENO4Еще вопрос, что на самом деле нужно топикстартеру. :-)если вдруг нужно что-то другое, то автору, скорее всего, сюда .
там точно есть то, что ему нужно...
...
Рейтинг: 0 / 0
Максимальное значение
    #39411806
RENO4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Анна,

Там тоже не все безупречно. Например, среди примеров в п.2 не учтена деградация left join до join. Работать будет, у всех свои странности при письме, конечно. Но так нет смысла (не принято) делать.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Максимальное значение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]