В последнее время PostgreSQL использовался для выполнения большого объема работы по обработке данных, и теперь я разберу используемые операторы SQL.
Оглавление
- создать базу данных
- создать форму
- вставить данные
- выбрать данные
- Несколько таблиц не удаляют повторяющиеся ассоциации
- Объединение нескольких таблиц и фильтрация
- Преобразование типа столбца
- NULL заполнен 0
- равноудаленное деление времени
- формат изменения времени
- создать временную метку (последовательность)
создать базу данных
СОЗДАТЬ БАЗУ ДАННЫХ имя_таблицы;
создать форму
CREATE имя_таблицы, ЕСЛИ НЕ СУЩЕСТВУЕТ {} (метка времени, целое число данных)
вставить данные
вставить в table_name значения (%s, %s);
выбрать данные
ВЫБЕРИТЕ время, данные ИЗ table_name
Несколько таблиц не удаляют повторяющиеся ассоциации
ВЫБЕРИТЕ * ИЗ таблицы1СОЮЗ ВСЕХSELECT * FROM table2
UNION — это ассоциация «верхний-нижний», которая объединяет данные нескольких таблиц и делится на объединение UNION с дедупликацией и объединение UNION ALL без дедупликации.
Объединение нескольких таблиц и фильтрация
ВЫБИРАТЬвремя, данныеОТТаблица 1ПРИСОЕДИНИТЬСЯТаблица 2НАтаблица1.id=таблица2.idГДЕtable1.code в ('999')
соединение - это ассоциация лево-право, связанная с левым и правым полным и т. д., это правило соединения,
где является условным оператором
Преобразование типа столбца
alter TABLE table_name alter COLUMN col_name type int с использованием col_name::int
преобразует тип столбца col_name в таблице table_name в int
NULL заполнен 0
update table_name set col_name=coalesce(col_name, 0)
заполняет NULL в столбце col_name в таблице table_name с 0
равноудаленное деление времени
ВЫБЕРИТЕ date_trunc('час', время) + ИНТЕРВАЛ '2 минуты' * (пол(извлечение('минута' из времени) / 2)) AS time_slot,sum(data) FROM table_name GROUP BY time_slot ORDER BY time_slot; table table_name
Согласно в столбец времени, группировать и суммировать каждые 2 минуты и сортировать по времени
формат изменения времени
to_char(время, 'ГГГГ-ММ-ДД ЧЧ24:МИ:00')::TIMESTAMP
после ::TIMESTAMP является необязательным, в соответствии с унифицированным форматом различных данных времени
создать временную метку (последовательность)
При слиянии нескольких таблиц обычно необходимо учитывать отсутствие данных, поэтому мы должны вручную установить стандартный столбец времени, чтобы отсутствующие строки данных также отображались, а не отображались из-за отсутствия данных.
ВЫБЕРИТЕ '2023-06-09 08:00:00'::timestamp КАК время
SELECT generate_series('2023-01-01 08:00'::timestamp, '2023-01-01 21:00'::timestamp, ' 10 минут'::интервал) Отметка времени AS;