Oracle-SQL-按月统计自助终端交易量
SQL实现的目标:
基本情况 | 现金交易情况 | 转账情况 | 转账交易情况(明细) | 其它业务情况 | 交易量汇总 | 日均交易量 | 交易金额 | 绩效情况(万元) | ||||||||||||||||||||
支行名 | 支行号 | 所属网点 | 网点号 | 管理员帐户 | 管理员 | 终端编号 | 取款笔数 | 取款金额 | 存款笔数 | 存款金额 | 转账笔数 | 转账金额 | 卡卡笔数 | 卡卡金额 | 卡折笔数 | 卡折金额 | 折卡笔数 | 折卡金额 | 折折笔数 | 折折金额 | 代缴费笔数 | 代缴费金额 | 查询笔数 | 存款余额(月日均) | 存款余额(月日均比上月) | |||
巴南支行 | 10 | 101302 | 东泉分理处 | 402230080416813378 | 骆涌 | 23003326 | 127 | 151950 | 51 | 43300 | 7 | 13562 | 0 | 0 | 0 | 0 | 3 | 3080 | 4 | 10482 | 0 | 0 | 253 | 438 | 16 | 208812 | 21.02 | 0.19 |
巴南支行 | 10 | 103201 | 跳石分理处 | 402230080344302189 | 万敏 | 23001874 | 357 | 294062 | 80 | 327320 | 14 | 100510 | 0 | 0 | 0 | 0 | 4 | 27000 | 10 | 73510 | 0 | 0 | 754 | 1205 | 43 | 721892 | 295.22 | 9.01 |
巴南支行 | 10 | 100401 | 木洞分理处 | 402230080350688018 | 唐自利 | 23001620 | 674 | 512739.4 | 295 | 534862 | 25 | 206080 | 0 | 0 | 3 | 18500 | 4 | 30180 | 18 | 157400 | 0 | 0 | 1541 | 2535 | 91 | 1253681 | 228.96 | 0.48 |
规则, 每天每种交易最多统计3笔
完成按月统计任务
用到的知识点总结:
1) case when的使用;
else count(transQK.tran_amt) end count else dayQK.count end
2)left join的使用; left join 中可以写where 的条件
--外连接取款 left join ( select else sum(dayQKIn.count) end count, else sum(dayQKIn.money) end money, term_id_in from ( select else count(transQK.tran_amt) end count, else sum(transQK.tran_amt) end money, to_char(to_date(transQK.p_req_date, 'yyyyMMdd'), 'dd') p_req_date, term_id_in from BIZ_OPER_TRANS transQK where -- 取款 便民取款 (transQK.P_TRANS_CODE') ,),),'yyyyMMdd') group by term_id_in,P_TRANS_CODE,to_char(to_date(transQK.p_req_date, 'yyyyMMdd'), 'dd') ) dayQKIn group by dayQKIn.term_id_in ) dayQK on dayQK.term_id_in=term.TERMINAL_ID
3) 时间函数 表示 上个月第一天 、 上个月最后一天
transCX.p_req_date ,),),'yyyyMMdd')
4)四舍五入 月笔数/天数
else dayQK.count end + else dayCK.count end + else dayZZ.count end + else dayDJ.count end + else dayCX.count end ) ),,),)
5) 最终的SQL
-----------------------------------终极版终结版------------------------------------------------------- -- 每月每种交易最多统计3笔 -- T05 便民终端 select parent.inst_code 支行号, parent.inst_name 支行名, inst.inst_code 网点号, inst.inst_name 网点名, term.admin_Acct 管理员账户 , term.admin_Name 管理员, term.terminal_id 终端号, else dayQK.count end 取款笔数, else dayQK.money end 取款金额, else dayCK.count end 存款笔数, else dayCK.money end 存款金额, else dayZZ.count end 转账笔数, else dayZZ.money end 转账金额, else dayDJ.count end 代缴笔数, else dayDJ.money end 代缴金额, else dayCX.count end 查询笔数, -- 汇总 else dayQK.count end + else dayCK.count end + else dayZZ.count end + else dayDJ.count end + else dayCX.count end 总笔数, -- 这里用了四舍五入 else dayQK.count end + else dayCK.count end + else dayZZ.count end + else dayDJ.count end + else dayCX.count end ) ),,),) 日均笔数, -- else dayQK.money end + else dayCK.money end + else dayZZ.money end + else dayDJ.money end 总金额 -- from ops_device_info device ,ops_institution inst,ops_institution parent ,OPS_TERMINAL_INFO term --外连接取款 left join ( select else sum(dayQKIn.count) end count, else sum(dayQKIn.money) end money, term_id_in from ( select else count(transQK.tran_amt) end count, else sum(transQK.tran_amt) end money, to_char(to_date(transQK.p_req_date, 'yyyyMMdd'), 'dd') p_req_date, term_id_in from BIZ_OPER_TRANS transQK where -- 取款 便民取款 (transQK.P_TRANS_CODE') ,),),'yyyyMMdd') group by term_id_in,P_TRANS_CODE,to_char(to_date(transQK.p_req_date, 'yyyyMMdd'), 'dd') ) dayQKIn group by dayQKIn.term_id_in ) dayQK on dayQK.term_id_in=term.TERMINAL_ID --外连接存款 left join ( select else sum(dayCKIn.count) end count, else sum(dayCKIn.money) end money, term_id_in from ( select else count(transCK.tran_amt) end count, else sum(transCK.tran_amt) end money, to_char(to_date(transCK.p_req_date, 'yyyyMMdd'), 'dd') p_req_date, term_id_in from BIZ_OPER_TRANS transCK where (transCK.P_TRANS_CODE') and transCK.p_req_date between to_char(add_months(last_day(sysdate) , ), 'yyyyMMdd') and to_char(add_months(last_day(sysdate), ), 'yyyyMMdd') group by term_id_in,P_TRANS_CODE,to_char(to_date(transCK.p_req_date, 'yyyyMMdd'), 'dd') ) dayCKIn group by dayCKIn.term_id_in ) dayCK on dayCK.term_id_in=term.TERMINAL_ID --外连接转账 left join ( select else sum(dayZZIn.count) end count, else sum(dayZZIn.money) end money, term_id_in from ( select else count(transZZ.tran_amt) end count, else sum(transZZ.tran_amt) end money, to_char(to_date(transZZ.p_req_date, 'yyyyMMdd'), 'dd') p_req_date, term_id_in from BIZ_OPER_TRANS transZZ where ( transZZ.P_TRANS_CODE' or transZZ.P_TRANS_CODE' ) ,),),'yyyyMMdd') group by term_id_in,P_TRANS_CODE,to_char(to_date(transZZ.p_req_date, 'yyyyMMdd'), 'dd') ) dayZZIn group by dayZZIn.term_id_in ) dayZZ on dayZZ.term_id_in=term.TERMINAL_ID --代缴费 left join ( select else sum(dayDJIn.count) end count, else sum(dayDJIn.money) end money, term_id_in from ( select else count(transDJ.tran_amt) end count, else sum(transDJ.tran_amt) end money, to_char(to_date(transDJ.p_req_date, 'yyyyMMdd'), 'dd') p_req_date, term_id_in from BIZ_OPER_TRANS transDJ where ( transDJ.P_TRANS_CODE' or transDJ.P_TRANS_CODE' ) ,),),'yyyyMMdd') group by term_id_in,P_TRANS_CODE,to_char(to_date(transDJ.p_req_date, 'yyyyMMdd'), 'dd') ) dayDJIn group by dayDJIn.term_id_in ) dayDJ on dayDJ.term_id_in=term.TERMINAL_ID --查询 left join ( select else sum(dayCXIn.count) end count, term_id_in from ( select else count(transCX.tran_amt) end count, to_char(to_date(transCX.p_req_date, 'yyyyMMdd'), 'dd') p_req_date, term_id_in from BIZ_OPER_TRANS transCX where ( transCX.P_TRANS_CODE' or transCX.P_TRANS_CODE' ) ,),),'yyyyMMdd') group by term_id_in,P_TRANS_CODE,to_char(to_date(transCX.p_req_date, 'yyyyMMdd'), 'dd') ) dayCXIn group by dayCXIn.term_id_in ) dayCX on dayCX.term_id_in=term.TERMINAL_ID -- and device.DEVICE_TYPE='T05' and term.TERMINAL_ID=device.TERMINAL_ID and term.inst_id=inst.inst_id and inst.PARENT_INST_ID=parent.inst_id -- -- and term.admin_name is not null ;
这个sql写的不好,太臃肿, 可以用交易码分组查询(然后用decode函数处理)
Oracle-SQL-按月统计自助终端交易量的更多相关文章
- sql按月统计数量和按月累加统计数量
1.简单的,按月统计数量 SELECT CREATE_DATE, DATE_FORMAT(CREATE_DATE, '%Y-%m') AS month , COUNT(*) AS sum FROM p ...
- SQL 按月统计(两种方式) 分类: SQL Server 2014-08-04 15:36 154人阅读 评论(0) 收藏
(1)Convert 函数 select Convert ( VARCHAR(7),ComeDate,120) as Date ,Count(In_code) as 单数,Sum(SumTrueNum ...
- SQL SERVER 月、季、年统计与常用查询语句汇总
一.SQL SERVER 月.季.年统计查询 --本天 SELECT *FROM dbo.TableName WHERE DATEDIFF(DAY,TimeField,getdate())= 0; - ...
- 常用Oracle SQL语句(汇总版)
Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象 一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, ...
- oracle sql语句
一.ORACLE的启动和关闭1.在单机环境下要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下su - oracle a.启动ORACLE系统oracle>svrmgrlSVRM ...
- Oracle SQL 调优健康检查脚本
Oracle SQL 调优健康检查脚本 我们关注数据库系统的性能,进行数据库调优的主要工作就是进行SQL的优化.良好的数据架构设计.配合应用系统中间件和写一手漂亮的SQL,是未来系统上线后不出现致命性 ...
- 《精通Oracle SQL(第2版) 》
<精通Oracle SQL(第2版) > 基本信息 作者: (美)Karen Morton Kerry Osborne Robyn Sands Riyaj Shamsud ...
- Oracle SQL性能优化技巧大总结
http://wenku.baidu.com/link?url=liS0_3fAyX2uXF5MAEQxMOj3YIY4UCcQM4gPfPzHfFcHBXuJTE8rANrwu6GXwdzbmvdV ...
- oracle sql 优化大全
转自: http://panshaobinsb.iteye.com/blog/1718233 http://yulimeander.blog.sohu.com/115850824.html 最近遇到了 ...
随机推荐
- java protected修饰符理解
Protected类型可以在本包和子类中访问的含义.在本包中访问,顾名思义,可以在定义类的包中的任何地方申请一个包含protected修饰符的域和方法的类的对象,并通过这个对象访问被protected ...
- 利用css实现页面加载时旋转动画
有时浏览一些网站时在刚加载页面时候会出现一个滚动动画如下图,特别是对于一些移动端的站点或者混合应用来说应该用户体验会好很多,扒了下页面发现是用css样式控制的,于是把页面以及css样式赋值了下来, h ...
- Struts2学习笔记(一)——环境搭建
1.创建Web项目并导入Struts2的主要jar包 在MyEclipse中新建Web项目,然后在lib目录下添加必须的jar包: 2.创建jsp页面 1).创建test.jsp页面: <bod ...
- 读书笔记 之 《阿里巴巴Java开发手册》
一.前言 这本书主要定义了一些代码的规范以及一些注意事项.我只根据我自己的不足,摘录了一些内容,方便以后查阅. 二.读书笔记 命名 1.代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符 ...
- VMware Workstation 12 Pro 之安装林耐斯优麒麟 X64系统
VMware Workstation 12 Pro 之安装林耐斯优麒麟 X64系统... --------------------- 先去官网下载ISO格式的系统安装包:http://www.ubun ...
- 关于aop的两种方式-基于注解和基于aspectj
spring的aop确实好用,能够在不影响业务功能的情况下,实现一些低耦合的功能. 而aop又有两种常用的实现方式,一种是用aspectj表达式去匹配,实现全局的配置,表达式还可以使用与或非符号去连接 ...
- Centos7安装nginx并设置为HTTP代理服务器(正向代理)
# wget https://nginx.org/download/nginx-1.9.9.tar.gz # .tar.gz # cd nginx- # ./configure --prefix=/u ...
- python爬虫之一---------豆瓣妹子图
#-*- coding:utf-8 -*- __author__ = "carry" import urllib import urllib2 from bs4 import Be ...
- 实战案例--TEMPDB暴涨
前言 tempdb暴增,造成磁盘空间不足,甚至影响业务运行. 正文 如图,tempdb log文件从7.40开始突然暴涨,因为 tempdb 0 M到 40G tempdb 所 ...
- JavaScript面向对象(二)——成员属性、静态属性、原型属性与JS原型链
前 言 JRedu 上一篇博客中,我们介绍了JS中的面向对象,并详细的解释了this的指向问题.本篇博客,我们继续来学习JS的面向对象.来深入理解一下JavaScript OOP中的成员属性/方 ...