首页 > 解决方案 > 使用 PostgreSQL 获取月份总和

问题描述

我有以下 SQL,按月显示总数:

select to_char(tanggal, 'mm') as month, 
      sum(nilai) as realisasi
    from 
      tbl_pasar_dini 
    where (date_part('year', tanggal)= extract(year from timestamp 'NOW()')) 
    group by 1

这是结果:

现实主义
01 2000
02 900
03 3000
04 200
05 5000
06 100

如何使总数累积,以便每个月的值都比上个月增加

标签: sqlpostgresql

解决方案


根据我从您的问题中解释的内容,您需要当前给定年份 2021 年所有月份的每个 realisasi 值的总和。因此,您可以重用给定的查询并执行此操作

select sum(realisasi) from (/* the select query you given */)

或只需稍作修改即可获得全部金额

select sum(nilai) as realisasi
    from 
      tbl_pasar_dini 
    where (date_part('year', tanggal)= extract(year from timestamp 'NOW()')) 

如果您还可以提供您的表结构,它会有所帮助。

编辑:所以从你的新评论中你想要的是每个月的运行总和。如果是这样,那么您必须使用 OVER 子句。

select to_char(tanggal, 'mm') as month,
      sum(sum(nilai)  OVER (ORDER BY month)) as realisasi
    from 
      tbl_pasar_dini 
    where (date_part('year', tanggal)= extract(year from timestamp 'NOW()')) 
    group by 1


推荐阅读