В заметке приведён пример формирования json средствами sql в PostgreSQL и как можно делать выборки из полей типа json.
В заметке приведён вариант реализации конструкции lag(my_val) ignore nulls для PostgreSQL.
Будем считать нарастающий итог salary работников в порядке даты найма. Подготовим для начала CTE для таблицы emp таким образом.
Периодически встречаю такое поверье - логически эквивалентные запросы на одних и тех же данных будут физически по-разному выполняться движком СУБД. В зависимости от того, как записано условие - через in, join или exists.
Коллектив авторов аж из 6 человек сочинил это поделие объёмом 227 страниц. И выложил на litres. За 790 рублей(!).
Недавно столкнулся с таким багом PostgreSQL. Жил себе да поживал в продакшне джоб Pentaho, в котором в том числе вызывается всякий pl/pgsql. И внезапно начал валиться с постгресовской ошибкой "too many range table entries". Версия PostgreSQL 13.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit.
Внезапно возникла задача формирования запросов к REST API из Pentaho DI. Есть несколько вариантов это сделать - степы REST Client в трансформации, Run SSH Commands, Execute a process.
Такие задачи часто встречаются в реальной жизни, например, динамический PIVOT в t-sql, если число столбцов изначально неизвестно. В заметке речь именно про формирование и выполнение sql в коде, динамически формируемый код может быть сколько угодно сложным, это просто демонстрация такой возможности.
При чтении книг периодически нужно запускать файлы примеров, и я постоянно забываю, как это делать. Чтобы не гуглить: