Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Максимальное значение / 12 сообщений из 12, страница 1 из 1
28.02.2017, 12:38
    #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
28.02.2017, 12:51
    #39411526
ursido
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальное значение
lux7,

Вы странно сформулировали вопрос.
Если нужна одна строка, то отсортируйте по колонке даты в порядке убывания, затем поставьте ограничение на 1 строку.
Если нужны несколько строк, то это уже группировка. Этот вопрос решается с помощью предложения DISTINCT ON.
...
Рейтинг: 0 / 0
28.02.2017, 13:14
    #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
28.02.2017, 15:18
    #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
28.02.2017, 15:26
    #39411728
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальное значение
RENO4,

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

Наверное, это на 2 порядка сложнее, чем LIMIT 1.
...
Рейтинг: 0 / 0
28.02.2017, 15:32
    #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
28.02.2017, 15:36
    #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
28.02.2017, 15:37
    #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
28.02.2017, 15:39
    #39411752
RENO4
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальное значение
Еще вопрос, что на самом деле нужно топикстартеру. :-)
...
Рейтинг: 0 / 0
28.02.2017, 15:45
    #39411761
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальное значение
RENO4Еще вопрос, что на самом деле нужно топикстартеру. :-)если вдруг нужно что-то другое, то автору, скорее всего, сюда .
там точно есть то, что ему нужно...
...
Рейтинг: 0 / 0
28.02.2017, 16:43
    #39411806
RENO4
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Максимальное значение
Щукина Анна,

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


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