oracle 存储过程 示例
CreationTime--2018年9月4日09点49分
Author:Marydon
1.情景展示
对VIRTUAL_QRCODELOG表的静态二维码,动态二维码,二维码总量按时间进行分组统计
表结构展示
存储过程入参展示
2.sql分析
要想完成这个sql需要将行转成列
第一步:
第二步:借助UNION ALL
--按日期统计动态二维码 SELECT TO_CHAR(QR_CREATETIME, 'yyyy-MM-dd') TIME, 0 STATIC_CODE, COUNT(1) DYNAMIC_CODE FROM VIRTUAL_QRCODELOG WHERE QR_CODE_TYPE = 0 GROUP BY TO_CHAR(QR_CREATETIME, 'yyyy-MM-dd') UNION ALL --按日期统计静态二维码 SELECT TO_CHAR(QR_CREATETIME, 'yyyy-MM-dd') TIME, COUNT(1) STATIC_CODE, 0 DYNAMIC_CODE FROM VIRTUAL_QRCODELOG WHERE QR_CODE_TYPE = 1 GROUP BY TO_CHAR(QR_CREATETIME, 'yyyy-MM-dd') ORDER BY TIME
第三步:按日期进行分组求和
扫描二维码关注公众号,回复:
3048784 查看本文章
SELECT TIME, --时间 SUM(STATIC_CODE) STATIC_CODE, --静态二维码 SUM(DYNAMIC_CODE) DYNAMIC_CODE, --动态二维码 SUM(STATIC_CODE) + SUM(DYNAMIC_CODE) SCAN_CODE --扫码 FROM ( --按日期统计动态二维码 SELECT TO_CHAR(QR_CREATETIME, 'yyyy-MM-dd') TIME, 0 STATIC_CODE, COUNT(1) DYNAMIC_CODE FROM VIRTUAL_QRCODELOG WHERE QR_CODE_TYPE = 0 GROUP BY TO_CHAR(QR_CREATETIME, 'yyyy-MM-dd') UNION ALL --按日期统计静态二维码 SELECT TO_CHAR(QR_CREATETIME, 'yyyy-MM-dd') TIME, COUNT(1) STATIC_CODE, 0 DYNAMIC_CODE FROM VIRTUAL_QRCODELOG WHERE QR_CODE_TYPE = 1 GROUP BY TO_CHAR(QR_CREATETIME, 'yyyy-MM-dd')) GROUP BY TIME ORDER BY TIME;