现在我每个月的平均值

SELECT EXTRACT(MONTH FROM date_time) AS month, EXTRACT(YEAR FROM date_time) AS year, avg("total") FROM my_table GROUP BY EXTRACT(MONTH FROM date_time), EXTRACT(YEAR FROM date_time)

但是SQL查询需要调整,以便

有可能吗?

对于每周

SELECT EXTRACT(WEEK FROM date_time) AS week, EXTRACT(YEAR FROM date_time) AS year, avg("total") FROM my_table GROUP BY EXTRACT(WEEK FROM date_time), EXTRACT(YEAR FROM date_time)

推荐答案

是的,有可能:

SELECT t1.month, t2.year, t1.tot - t2.tot FROM
(
SELECT EXTRACT(MONTH FROM date_time) AS month, EXTRACT(YEAR FROM date_time) AS year, avg("total") AS tot
FROM my_table GROUP BY EXTRACT(MONTH FROM date_time), EXTRACT(YEAR FROM date_time)
) t1
join (
SELECT EXTRACT(MONTH FROM date_time) AS month, EXTRACT(YEAR FROM date_time) AS year, avg("total") AS tot
FROM my_table GROUP BY EXTRACT(MONTH FROM date_time), EXTRACT(YEAR FROM date_time)
) t2
on ((t1.year = t2.year) and (t1.month = t2.month + 1)) or
   ((t1.year = t2.year + 1) and (t1.month = 1) and (t2.month = 12))

我已将您的select转换为两个子 Select ,分别命名为t1t2,并按照左连接的标准将它们连接起来.

请注意,第一个月当前没有一对,如果您仍然需要它,那么您可以使用left joincoalesce来确保即使是未配对的项目也有一个"对",并且totNULL默认为0.

进一步注意,您可以将此子查询转换为view以提高可读性.

Postgresql相关问答推荐

优化PostgreSQL查询以将用户插入数据库

mosquito-go-auth with postgres authorization error

哪种数据类型是除法的结果?

Cloud SQL 时间点 数据驻留

PostgreSQL - 如何获得前一个月和一周的价值?

是否可以使用 pgAdmin4 自动格式化/美化 SQL 查询?

PostgreSQL 中的 DATEADD 等效项

PostgreSQL ORDER BY 问题 - 自然排序

在 PostgreSQL 中将时间转换为秒

plpgsql:使用 2 个 OUT 参数调用函数

在 postgreSQL 中更改序列名称

NOT LIKE 带有 NULL 值的行为

使用 pg-promise 插入多条记录

由于外键约束无法删除对象

Hibernate 启动很慢

Postgresql 中的 NOT EXISTS 子句

SQLAlchemy 声明式:定义触发器和索引 (Postgres 9)

如何将 PostgreSQL 查询输出导出到 csv 文件

PostgreSQL 字符串(255) 限制 - Rails、Ruby 和 Heroku

PostgreSQL - 必须出现在 GROUP BY 子句中或在聚合函数中使用