Как в postgres выполнить сортировку по вычислению разницы даты из разных таблиц при условии, что связь есть?

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
EVOSandru6
Сообщения: 605
Зарегистрирован: 2014.07.04, 13:33

Как в postgres выполнить сортировку по вычислению разницы даты из разных таблиц при условии, что связь есть?

Сообщение EVOSandru6 »

Добрый день.

Я хочу сделать сортировку отделов по времени реагирования комментирования на привязанные к ним форумы:.

Таблицы:

m_departments
-------------------
id
name

m_forums
-------------------
id
date_create_stamp (int)
department_id

mc_comments_forums
-------------------
id
date_create_stamp (int)
forum_id

что то проде того:

Код: Выделить всё

SELECT "m_departments".id, "m_departments".name, 
floor((sum(mc_comments_forums.date_create_stamp - m_forums.date_update_stamp) / count(m_forums)) / 3600)
AS total
FROM "m_departments" 
LEFT JOIN m_forums 
ON "m_departments".id = m_forums.departmsent_id
LEFT JOIN mc_comments_forums 
ON m_forums.id = mc_comments_forums.forum_id
Проблемы:

1) в Where - как сделать, чтобы вычисление:

Код: Выделить всё

floor((sum(mc_comments_forums.date_create_stamp - m_forums.date_update_stamp) / count(m_forums)) / 3600)

Производилось только для связей, если они есть (not null или как то еще).

2. Чтобы вычисление

Код: Выделить всё

floor((sum(mc_comments_forums.date_create_stamp - m_forums.date_update_stamp) / count(m_forums)) / 3600)
производилось с саммым ранним оставленным для форума комментарием.

Помимо этого - насколько правильный запрос?

Буду благодарен за любую помощь.
Ответить