最近使用PostgreSQL做了不少数据处理的工作,现将学习到的SQL语句整理一下。
创建数据库
CREATE DATABASE table_name;
创建表格
CREATE table_name IF NOT EXISTS {} (time timestamp, data int)
插入数据
insert into table_name values(%s, %s);
选择数据
SELECT time, data FROM table_name
多表上下不去重关联
SELECT * FROM table1 UNION ALL SELECT * FROM table2
UNION是上下关联,将多个表的数据进行合并,分为去重合并UNION和不去重合并UNION ALL
多表左右关联并筛选
SELECT time, data FROM table1 JOIN table2 ON table1.id=table2.id WHERE table1.code in (‘999’)
join 是左右关联,相关的还有left right full 等, on是join的规则
where是条件语句
转换列的类型
alter TABLE table_name alter COLUMN col_name type int using col_name::int
将表格table_name中的col_name列的类型转换为int
NULL填充为0
update table_name set col_name=coalesce(col_name, 0)
将表格table_name 中的col_name列中的NULL填充为0
时间等距离分割
SELECT date_trunc(‘hour’, time) + INTERVAL ‘2 minutes’ * (floor(extract(‘minute’ from time) / 2)) AS time_slot,sum(data) FROM table_name GROUP BY time_slot ORDER BY time_slot;
将表格table_name根据时间time列按照每2分钟间隔进行分组求和并按照时间排序