【SQL】PostgreSQL语句

最近使用PostgreSQL做了不少数据处理的工作,现将用到的SQL语句整理一下。

目录

  • 创建数据库
  • 创建表格
  • 删除表格
  • 插入数据
  • 选择数据
  • 多表上下不去重关联
  • 多表左右关联并筛选
  • 转换列的类型
  • NULL填充为0
  • 时间等距离分割
  • 时间修改格式
  • 创建一个时间戳(序列)
  • 对timestamp中的时间项进行筛选
  • 对timestamp中的某日期项计数并筛选
  • 临时表

创建数据库

CREATE DATABASE table_name;

创建表格

CREATE table_name IF NOT EXISTS {} (time timestamp, data int)

删除表格

drop table if exists table_name

插入数据

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

时间修改格式

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;

对timestamp中的时间项进行筛选

选择8点到9点15的所有数据
where date_trunc(‘minute’,time)>=date_trunc(‘minute’,time::date+interval ‘8 hours 00 minutes’) and date_trunc(‘minute’,time)<=date_trunc(‘minute’,time::date+interval ‘9 hours 15 minutes’))

对timestamp中的某日期项计数并筛选

对相同日期数据计数,并选择计数后为78的所有日期时间下的数据
select time::date, count() as count from table_name group by time::date having count()=78 order by time::date

临时表

新建临时表
create temp table table_name as SELECT …(某表操作)
删除临时表
drop table table_name

你可能感兴趣的:(SQL,sql,postgresql,数据库)