Tag Archives: PostgreSQL
SQL: выборка разреженных данных (не больше раза в час)
Допустим, мы сохраняем данные в базу раз в 10 минут. Нужно достать данные из базы, начинающиеся с определённого времени и не чаще одного раза за час. В качестве базы используется sqlite3, но идея реализуется так же для других SQL.
Подробное объяснение EXPLAIN в PostgreSQL
understanding_explain
PostgreSQL — генерирование повторяющихся значений для неупорядоченных данных
Была задача: есть некоторое количество заказов, которым оказались не назначены менеджеры, есть 3 менеджера, между которыми нужно распределить эти заказы равномерно. Легче всё сделать на php или python, но задача была сделать всё при помощи SQL-запроса без хранимых процедур и желательно одним запросом.
Postgresql-аналоги myslq-евской «ON DUPLICATE KEY UPDATE»
В mysql есть очень удобная конструкция
1 |
INSERT INTO table (columns) VALUES (values) ON DUPLICATE KEY UPDATE column1=value1, column2=value2 |
Это очень удобно тогда, когда нужно вставить только те данные, которых в таблице нет (при этом в апдейте указывается уже существующее значение поля). В postgresql такого, к сожалению, нет. Но подобное поведение можно сэмулировать несколькими способами. Два самых интересных:
Как сдампить базу данных PostgreSql в локальную базу через командную строку в Windows
1 |
pg_dump.exe -U [user_remote] -h [host_remote] [database_name] | psql -U [user_local] -d [local_db_name] |
PostgreSQL EXPLAIN
При работе с MySql’овским EXPLAIN’ОМ всё просто (а может просто привычно). Postgres предоставляет больше информации, но с ним сложнее разобраться. Далее — вольный перевод статьи про PostgreSQL EXPLAIN (ссылка на оригинал в конце статьи).
Генерирование данных в PostgreSQL
Задача: Рекурсивно поднимаем статистику по количеству аккаунтов на указанную дату. При этом у аккаунта есть только период с-по. Основная задача — сгенерировать даты.