一个PGer
pg_stat_statements 只是记录一些统计信息,如果想知道运行时语句的当时执行计划,那么需要配置auto_explain插件,这个会记录大于你指定时间SQL语句的执行计划,更有利于分析SQL语句。
基于PG开发的各种国产数据库也在做oracle的语法兼容。
举个例子:假设每月30日,一年365日
2015-1-1 至 2015-1-31 = 200 * 30 = 6000 --账户在上一年度最后余额为200元
2015-2-1 至 2015-3-31 = 100 * 60 = 6000 --账户在2015-02-01当前余额为100元
2015-4-1 至 2015-6-21 = 1000 * 80 = 80000 --账户在2015-04-01当前余额为1000元
2015-6-22 至 2015-12-31 = 111 * 190 = 21090 --账户在2015-06-22当前余额为111元
年日均= (6000+6000+80000+21090)/365 = 309.84
但是以上有可能跨年,跨年时需要考虑上一年度的最后一个余额;
如果为当年的年份,那么最后日期计算到今天。
不知道算不算搞定,一个人维护公司几百个PG节点
--我的理解昨天应该是指上一个日期,不一定连续
--以下是PostgreSQL数据库的实现(仅供参考,没做实际数据测试)
SELECT *
FROM (SELECT *,
lead(月累, 1, 0) over w AS last_month,
lead(年累, 1, 0) over w AS last_year
FROM t1 window w AS(PARTITION BY to_char(日期,'yyyy') ORDER BY 日期 DESC)) t
WHERE t.last_month + 数据 != t.月累
OR t.last_year + 数据 != t.年累;