oracle 存储过程 示例

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

  

  第三步:按日期进行分组求和

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;

  

3.效果展示

 相关推荐:

猜你喜欢

转载自www.cnblogs.com/Marydon20170307/p/9583506.html