ORACLE笔记

--查询存储过程、触发器、函数、包、包体、类型、类型体的内容

SELECT * FROM DBA_SOURCE;



--表空间查看

SELECT A.TABLESPACE_NAME, --表空间

      ALL_SPACE, --总共空间大小(G)

      ALL_SPACE - FREE_SPACE AS USE_SPACE, --使用空间大小(G)

      (ALL_SPACE - FREE_SPACE) / ALL_SPACE * 100 AS USE_RATE --使用率(%)

  FROM (SELECT TABLESPACE_NAME,

              SUM(BYTES) / 1024 / 1024 / 1024 AS FREE_SPACE

          FROM DBA_FREE_SPACE

        GROUP BY TABLESPACE_NAME) A

  LEFT JOIN (SELECT TABLESPACE_NAME,

                    SUM(BYTES) / 1024 / 1024 / 1024 AS ALL_SPACE

              FROM DBA_DATA_FILES

              GROUP BY TABLESPACE_NAME) B

    ON A.TABLESPACE_NAME = B.TABLESPACE_NAME;



--数据准备(求季末余额)

CREATE TABLE CCS2_DBA.T_SYF_20191213(ACCOUNT_ID NVARCHAR2(100),BAL_CHANGE_DT DATE, BAL NUMBER);

INSERT INTO CCS2_DBA.T_SYF_20191213(ACCOUNT_ID,BAL_CHANGE_DT,BAL)VALUES('001',TO_DATE('20160101','YYYYMMDD'),500);

INSERT INTO CCS2_DBA.T_SYF_20191213(ACCOUNT_ID,BAL_CHANGE_DT,BAL)VALUES('001',TO_DATE('20160121','YYYYMMDD'),600);

INSERT INTO CCS2_DBA.T_SYF_20191213(ACCOUNT_ID,BAL_CHANGE_DT,BAL)VALUES('001',TO_DATE('20160406','YYYYMMDD'),800);

INSERT INTO CCS2_DBA.T_SYF_20191213(ACCOUNT_ID,BAL_CHANGE_DT,BAL)VALUES('001',TO_DATE('20160505','YYYYMMDD'),400);

INSERT INTO CCS2_DBA.T_SYF_20191213(ACCOUNT_ID,BAL_CHANGE_DT,BAL)VALUES('001',TO_DATE('20160701','YYYYMMDD'),700);

INSERT INTO CCS2_DBA.T_SYF_20191213(ACCOUNT_ID,BAL_CHANGE_DT,BAL)VALUES('001',TO_DATE('20180808','YYYYMMDD'),900);

INSERT INTO CCS2_DBA.T_SYF_20191213(ACCOUNT_ID,BAL_CHANGE_DT,BAL)VALUES('001',TO_DATE('20190111','YYYYMMDD'),300);

--利用窗口函数计算出季末余额

SELECT A.DATE_OF_Q, NVL(B.BAL, 0)

  FROM (SELECT ADD_MONTHS(TRUNC(SYSDATE, 'Q') - 1, -LEVEL * 3) AS DATE_OF_Q

          FROM DUAL

        CONNECT BY LEVEL <= 5 * 4) A

  LEFT JOIN (SELECT A.ACCOUNT_ID,

                    A.BAL_CHANGE_DT AS START_DT,

                    NVL(MAX(BAL_CHANGE_DT)

                        OVER(PARTITION BY ACCOUNT_ID ORDER BY BAL_CHANGE_DT

                            ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING),

                        TRUNC(SYSDATE)) AS END_DT,

                    A.BAL

              FROM CCS2_DBA.T_SYF_20191213 A) B

    ON A.DATE_OF_Q >= B.START_DT

  AND A.DATE_OF_Q < B.END_DT

ORDER BY A.DATE_OF_Q;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容