【SQL】PostgreSQL语句

最近使用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

扫描二维码关注公众号,回复: 15362343 查看本文章

时间等距离分割

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分钟间隔进行分组求和并按照时间排序

时间修改格式

to_char(time, ‘YYYY-MM-DD HH24:MI:00’)::TIMESTAMP
后面的::TIMESTAMP可有可无,根据多种时间数据的统一格式来

创建一个时间戳(序列)

在多表融合中,通常需要考虑数据缺失的情况,因此我们应当手动设置标准的时间列,这样缺失的数据行也会显示,不会因为数据缺失而不显示。
SELECT ‘2023-06-09 08:00:00’::timestamp AS time
SELECT generate_series(‘2023-01-01 08:00’::timestamp, ‘2023-01-01 21:00’::timestamp, ‘10 minutes’::interval) AS timestamp;

猜你喜欢

转载自blog.csdn.net/qq_43166192/article/details/130934056
今日推荐