powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Select максимальной и минимальной даты
3 сообщений из 3, страница 1 из 1
Select максимальной и минимальной даты
    #40105448
DDoroFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица
code date_low date_up sum
1 2015-01-01 2020-12-31 100
1 2021-01-01 2025-12-31 150

Как сделать select, чтобы получилась одна строка, в которой date_low минимальная, а date_up максимальная из этих двух строк. При этом sum берется из строки с максимальной date_up.[li]
...
Рейтинг: 0 / 0
Select максимальной и минимальной даты
    #40105453
yens_gjytk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDoroFF,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with t (code, date_low, date_up, sum) as (
  values (1, date '2015-01-01', date '2020-12-31', 100)
       , (1, date '2021-01-01', date '2025-12-31', 150)
)
select d.date_low
     , d.date_up
     , s.sum
  from (select min(t.date_low) as date_low
             , max(t.date_up)  as date_up
          from t) as d
 inner join (select t.date_up
                  , min(t.sum) as sum
               from t
              group by t.date_up) as s
    on s.date_up = d.date_up
...
Рейтинг: 0 / 0
Select максимальной и минимальной даты
    #40106216
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDoroFF,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
--
-- Тестовые данные:
with t (code, date_low, date_up, sum) as (
  values (1, date '2015-01-01', date '2020-12-31', 100)
       , (1, date '2021-01-01', date '2025-12-31', 150)
)
--
-- Основной запрос
select distinct code
      , min(date_low) over(partition by code) as min_date_low
      , max(date_up) over(partition by code) as max_date_up
      , first_value(sum) over(partition by code order by date_up desc) as x_sum
  from t


Но считать агрегат через аналитику - дурной тон.
Поэтому сразу делаем всё на агрегации:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
--
-- Тестовые данные:
with t (code, date_low, date_up, sum) as (
  values (1, date '2015-01-01', date '2020-12-31', 100)
       , (1, date '2021-01-01', date '2025-12-31', 150)
)
--
-- Основной запрос:
select code
     , min(date_low) as min_date_low
     , max(date_up) as max_date_up
     , substring(max(to_char(date_up, 'yyyymmddhh24miss')||sum::text) from 15)::int as x_sum
  from t
 group by code

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


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