Комментарии 6
Можно я, пользуясь случаем, спрошу:
У меня бот ведёт список игр в таблице game (в т.ч. поля created и ended - начало и конец игры)
Выясняю, сколько игр велось одновременно запросом:
SELECT g.id, g.created, (SELECT count(1) FROM game g1 WHERE g1.created >'2021-08-13' AND g1.created > g.created AND g1.created<g.ended) AS aaa FROM game g WHERE g.created > '2021-08-13'
Поле created - индексированное.
Но, чувствую, можно как-то элегантнее?
И, кстати, почему в postgresql нельзя сделать (см. запрос выше)
ORDER BY aaa ?
сколько игр велось одновременно
По описанию задачи очень похоже, что вам нужна модель "Отрезки на интервале" из статьи "PostgreSQL Antipatterns: работаем с отрезками в «кровавом энтерпрайзе»".
G1.CREATED > '2021-08-13'
AND G1.CREATED > G.CREATED
Одно из этих условий возможно избыточно в подзапросе ведь уже есть в основном такое ограничение
Известны ли Вам способы вызова внешних систем из БД (postgres), что-то по аналогии с триггером, например:
В таблицу занесли данные, триггер может добавить запись в другую таблицу. Но мы должны постоянно мониторить её...
А вот можно ли "дёрнуть" по REST внешнюю систему, или послать маленький UPD-пакет куда-либо?
Первый вариант - FDW, вот примеры для MSSQL, ClickHouse, MySQL и PostgreSQL.
Второй - реализация функции на каком-то из untrusted-языков.
-- Глупое животное! Золота не может быть слишком много!
PostgreSQL Antipatterns: «слишком много золота»