LINUX.ORG.RU

postgresql, как сджойнить две таблицы?

 ,


0

1

Собственно сабж:

Есть запрос, возвращающий таблицу вида

time
-----
1999-01-01 23:00:11
1999-02-01 12:11:54
...

И есть таблица вида

data | time
------------
 1   | 1999-01-01 23:01:11
 2   | 1999-01-01 23:13:00
 3   | 1999-02-01 12:12:21
 4   | 1999-02-01 12:14:16

Нужно сджойнить их так, чтоб получить таблицу вида

start               | fin
-----------------------------------------
1999-01-01 23:00:11 | 1999-01-01 23:01:11
1999-02-01 12:11:54 | 1999-02-01 12:12:21

То есть каждому времени из первой таблицы сопоставить минимальное следующее за ним время из второй. Как сделать такое малой кровью? Спасибо.

★★★

SELECT a.time AS start, MINIMUM(b.time) AS fin
FROM a AS a
LEFT JOIN b AS b
ON a.time <= b.time

если что, гуглить на тему: срез последних в запросе sql

bvn13 ★★★★★ ()
Последнее исправление: bvn13 (всего исправлений: 2)
Ответ на: комментарий от bvn13

Что за функция минимум? Для таймстэмпов не определена.

SELECT a.time AS start, MIN(b.time) AS fin
FROM a AS a
LEFT JOIN b AS b
ON a.time < b.time
GROUP BY a.time

Вроде работает, спасибо.

Freyr69 ★★★ ()
Последнее исправление: Freyr69 (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.