oracle 查询去年同期,Oracle求近7日累計值和去年同期值
數據需求:
柱圖分別求所有電廠最近7日電量的總和,和同期電量總和
折線一為最近7日電量
X軸為時間,從昨天開始的7日。
Y軸為發電量。
發電量表:DR_INDEX_SUM_DAY字段說明:
FACTORY_ID為電廠編碼
INDEX_ID為數據維度
INDEX_DAY為日期
INDEX_VALUE為發電量值
INDEX_ID字段中fdl_day、fdl_day_wind為發電類型
fdl_month_plan_gsfdmb為月計划值
數據如下圖:
實現策略:求所有電廠近7日累計值和去年同期值
1)求出當日所有電廠的總和值;
2)在1的基礎上使用Oracle sum(*)over(order by * range *)累計分析函數加開窗對近7天的值進行聚集計算;
3)使用round函數對指定2位小數進行四合五入計算;
4)使用row_number() over(partition by * order by *) 生成不同年份,不同月份的序列,通過lag函數去取出同期的數據;
5)使用coalesce函數對null值補零。
SQL腳本:
/*求所有電廠近7日累計值和去年同期值*/
with tb as(
select to_char(t.index_day, 'YYYY') year,
to_char(t.index_day, 'MM') month,
t.index_day,
t.index_value
from DR_INDEX_SUM_DAY2 t
where t.factory_id != 'gwny'
and t.index_id in ('fdl_day', 'fdl_day_wind')
),
tb2 as(
select t.year, t.month, t.index_day, sum(t.index_value) t_day_sum
from tb t
group by t.year, t.month, t.index_day
),
tb3 as(
select t.year,
t.month,
t.index_day,
round(sum(t.t_day_sum) over(order by t.index_day range between 6 preceding and current row) / 1000,2) last_7_day_sum, --近7日累計值
row_number() over(partition by t.year order by t.index_day) seq --分組序號
from tb2 t
group by t.year, t.month, t.t_day_sum, t.index_day
)
select t.year,
t.month,
t.index_day,
t.last_7_day_sum, --近7日累計值
coalesce(lag(t.last_7_day_sum, 1) over(partition by t.seq order by t.index_day),0) Last_year_last_7_day --近7日去年同期值,如果為空自動補0
from tb3 t
order by t.index_day desc
查詢結果:
oracle 查询去年同期,Oracle求近7日累計值和去年同期值相关推荐
- Oracle求近7日累计值和去年同期值
数据需求: 柱图分别求所有电厂最近7日电量的总和,和同期电量总和 折线一为最近7日电量 X轴为时间,从昨天开始的7日. Y轴为发电量. 发电量表:DR_INDEX_SUM_DAY 字段说明: FACT ...
- oracle查询表唯一索引,oracle查询索引(oracle查看表索引)
oracle查询索引(oracle查看表索引) 2020-07-24 11:01:26 共10个回答 选中表右键View然后查看index 通过PL/SQL可以直接查看某表是否建索引,通过SQL查询s ...
- oracle查有哪些数据库,oracle查询数据库(oracle查询所有数据库)
oracle查询数据库(oracle查询所有数据库) 2020-07-24 12:01:17 共10个回答 PLsql查询工具便可查询 你指所有的表吗?如果你想查数据库中所有的表的话,可以查询sele ...
- oracle 查询天,Oracle查询_ 单表查询
前面我们详解了关于Oracle的增删改,今天让我们接着来学习Oracle的查询吧, Oracle中查询可是重头戏噢!!!跟着煌sir的步伐,走位,走位~~~ 小知识锦囊 在此前,先讲解一个小知识点 O ...
- oracle查询快慢,Oracle查询连接数和sql快慢脚本
Oracle查询连接数和sql快慢脚本 一.查询执行最慢的sql select * from (select sa.SQL_TEXT, sa.SQL_FULLTEXT, sa.EXECUTIONS & ...
- oracle 查询reference,ORACLE高级查询之MODEL PART3
接PART2:http://blog.chinaunix.net/uid-7655508-id-5835051.html 1.2.4 Null度量和单元格缺失 在Model查询中,对NULL度量有两种 ...
- oracle 查询最高分,oracle高级查询
幕课oracle学习笔记 --!!!scott用户 --一.分组查询 --1.常用的分组函数:AVG(平均数),SUM,MIN,MAX,COUNT,WM_CONCAT(行转列) select avg( ...
- oracle查询元数据,Oracle Spatial-元数据及SDO_GEOMETRY
一.空间表的元数据 将表的SDO_GEOMETRY列的所有对象作为一个空间层.Spatial需要对所有空间对象进行验证.创建索引和查询.此时需要为图层指定适当的元数据,该数据包含如下信息:维度.维度边 ...
- oracle 查询 ppt,oracle子查询.ppt
<oracle子查询.ppt>由会员分享,可在线阅读,更多相关<oracle子查询.ppt(26页珍藏版)>请在人人文库网上搜索. 1.子查询,目标,通过本章学习,您将可以: ...
- oracle查询file_name,Oracle DG环境下db_file_name_convert的实际意义
关于DG环境下备库数据文件重命名的问题: **前言:** 主要想表明DG环境下备库数据文件重命名的问题,以及db_file_name_convert与log_file_name_convert的作用. ...
最新文章
- 论如何骗过计算机视觉AI网络,UCLA专家为你支几招
- 【强化学习】强化学习专栏上线,60多篇文章等你follow
- ITK:复制过滤器filter
- SDNU 1062.Fibonacci(矩阵快速幂)
- 【牛客 - 370H】Rinne Loves Dynamic Graph(分层图最短路)
- preview窗口 unity_Unity3D在Preview中打印日志的方法
- fiddler 抓取 安卓模拟器 https包
- python中的选择结构语句是语句_选择结构-if语句和if...else语句
- mysql数据库导入视图表失败_一个mysqldump导出失败的案例分析
- 从有到优:百度前端接入技术的升级之路
- 老外的一份渗透测试报告
- 《Multiobjective Evolutionary Algorithms:A Comparative Case Study and the Strength Pareto Approach》
- PowerVR性能建议-黄金法则
- 教你如何用Python抓取QQ音乐歌单及分析
- npm install 报错:found XXX vulnerabilities (XXX low, X moderate),run `npm audit fix` to fix them, or `
- 如何用大数据做行为预测的?
- 原创 | 王欣:多维深耕打造数字化银行
- Git 学习之团队协作(Gitee实操)
- 3D可视化(互联网)
- 二进制流转PDF,未能加载的pdf文档