首页 > 数据库 >Oracle 创建和删除维

Oracle 创建和删除维

时间:2023-11-07 12:05:53浏览次数:27  
标签:CUSTOMER 删除 HIERARCHY 创建 SALES YYYY TIME Oracle SELECT

--create sales table    
CREATE TABLE sales    
(trans_date DATE, cust_id INT, sales_amount NUMBER);--insert sale rows     INSERT /*+ APPEND */    
INTO SALES    
 SELECT TRUNC(SYSDATE, 'year') + MOD(ROWNUM, 366) TRANS_DATE,    
     MOD(ROWNUM, 100) CUST_ID,    
     ABS(DBMS_RANDOM.RANDOM) / 100 SALES_AMOUNT    
   FROM ALL_OBJECTS;     
SELECT COUNT(*) FROM sales;--go on inserting rows    
BEGIN    
 FOR I IN 1 .. 6 LOOP    
  INSERT /*+ APPEND */    
  INTO SALES    
   SELECT TRANS_DATE,    
       CUST_ID,    
       ABS(DBMS_RANDOM.RANDOM) / 100 SALES_AMOUNT    
     FROM SALES;    
  COMMIT;    
 END LOOP;    
END;--create index organized table    
CREATE TABLE TIME_HIERARCHY(DAY PRIMARY KEY, MMYYYY, MON_YYYY, QTR_YYYY, YYYY) ORGANIZATION INDEX AS    
    SELECT DISTINCT TRANS_DATE DAY,    
                    CAST(TO_CHAR(TRANS_DATE, 'mmyyyy') AS NUMBER) MMYYYY,    
                    TO_CHAR(TRANS_DATE, 'mon-yyyy') MON_YYYY,    
                    'Q' || CEIL(TO_CHAR(TRANS_DATE, 'mm') / 3) || ' FY' ||    
                    TO_CHAR(TRANS_DATE, 'yyyy') QTR_YYYY,    
                    CAST(TO_CHAR(TRANS_DATE, 'yyyy') AS NUMBER) YYYY    
      FROM SALES;--create materialized view    
CREATE MATERIALIZED VIEW MV_SALES BUILD IMMEDIATE REFRESH ON DEMAND ENABLE QUERY REWRITE AS    
    SELECT SALES.CUST_ID,    
           SUM(SALES.SALES_AMOUNT) SALES_AMOUNT,    
           TIME_HIERARCHY.MMYYYY    
      FROM SALES, TIME_HIERARCHY    
     WHERE SALES.TRANS_DATE = TIME_HIERARCHY.DAY    
     GROUP BY SALES.CUST_ID, TIME_HIERARCHY.MMYYYY;    
analyze table sales compute statistics;    
analyze table time_hierarchy compute statistics;alter session set query_rewrite_enabled=true;   
alter session set query_rewrite_integrity=trusted;--query by Month    
SELECT TIME_HIERARCHY.MMYYYY, SUM(SALES_AMOUNT)    
  FROM SALES, TIME_HIERARCHY    
 WHERE SALES.TRANS_DATE = TIME_HIERARCHY.DAY    
 GROUP BY TIME_HIERARCHY.MMYYYY    
--query by Quarter     SELECT TIME_HIERARCHY.QTR_YYYY, SUM(SALES_AMOUNT)    
  FROM SALES, TIME_HIERARCHY    
 WHERE SALES.TRANS_DATE = TIME_HIERARCHY.DAY    
 GROUP BY TIME_HIERARCHY.QTR_YYYY;--create dimension    
CREATE DIMENSION TIME_HIERARCHY_DIM     
  LEVEL DAY IS TIME_HIERARCHY.DAY     
  LEVEL MMYYYY IS TIME_HIERARCHY.MMYYYY     
  LEVEL QTR_YYYY IS TIME_HIERARCHY.QTR_YYYY     
  LEVEL YYYY IS TIME_HIERARCHY.YYYY     
  HIERARCHY TIME_ROLLUP(DAY CHILD OF MMYYYY CHILD OF QTR_YYYY CHILD OF YYYY)     
  ATTRIBUTE MMYYYY DETERMINES MON_YYYY;--drop dimension    
DROP DIMENSION TIME_HIERARCHY_DIM;--yearly query    
SELECT TIME_HIERARCHY.YYYY, SUM(SALES_AMOUNT)    
  FROM SALES, TIME_HIERARCHY    
 WHERE SALES.TRANS_DATE = TIME_HIERARCHY.DAY    
 GROUP BY TIME_HIERARCHY.YYYY;--create index organized table    
CREATE TABLE CUSTOMER_HIERARCHY(CUST_ID PRIMARY KEY, ZIP_CODE, REGION) ORGANIZATION INDEX AS    
    SELECT CUST_ID,    
           MOD(ROWNUM, 6) || TO_CHAR(MOD(ROWNUM, 1000), 'fm0000') ZIP_CODE,    
           MOD(ROWNUM, 6) REGION    
      FROM (SELECT DISTINCT CUST_ID FROM SALES);analyze table CUSTOMER_HIERARCHY compute statistics;
drop materialized view mv_sales;
--recreate materialized view    
CREATE MATERIALIZED VIEW MV_SALES BUILD IMMEDIATE REFRESH ON DEMAND ENABLE QUERY REWRITE AS    
    SELECT CUSTOMER_HIERARCHY.ZIP_CODE,    
           TIME_HIERARCHY.MMYYYY,    
           SUM(SALES.SALES_AMOUNT) SALES_AMOUNT    
      FROM SALES, TIME_HIERARCHY, CUSTOMER_HIERARCHY    
     WHERE SALES.TRANS_DATE = TIME_HIERARCHY.DAY    
       AND SALES.CUST_ID = CUSTOMER_HIERARCHY.CUST_ID    
     GROUP BY CUSTOMER_HIERARCHY.ZIP_CODE, TIME_HIERARCHY.MMYYYY;--query by month    
SELECT CUSTOMER_HIERARCHY.ZIP_CODE,    
    TIME_HIERARCHY.MMYYYY,    
    SUM(SALES.SALES_AMOUNT) SALES_AMOUNT    
  FROM SALES, TIME_HIERARCHY, CUSTOMER_HIERARCHY    
 WHERE SALES.TRANS_DATE = TIME_HIERARCHY.DAY    
   AND SALES.CUST_ID = CUSTOMER_HIERARCHY.CUST_ID    
 GROUP BY CUSTOMER_HIERARCHY.ZIP_CODE, TIME_HIERARCHY.MMYYYY--query by year    
SELECT CUSTOMER_HIERARCHY.REGION,    
    TIME_HIERARCHY.YYYY,    
    SUM(SALES.SALES_AMOUNT) SALES_AMOUNT    
  FROM SALES, TIME_HIERARCHY, CUSTOMER_HIERARCHY    
 WHERE SALES.TRANS_DATE = TIME_HIERARCHY.DAY    
   AND SALES.CUST_ID = CUSTOMER_HIERARCHY.CUST_ID    
 GROUP BY CUSTOMER_HIERARCHY.REGION, TIME_HIERARCHY.YYYY;DROP DIMENSION time_hierarchy_dim;
CREATE DIMENSION SALES_DIMENSION    
       LEVEL CUST_ID IS CUSTOMER_HIERARCHY.CUST_ID     
       LEVEL ZIP_CODE IS CUSTOMER_HIERARCHY.ZIP_CODE     
       LEVEL REGION IS CUSTOMER_HIERARCHY.REGION     
       LEVEL DAY IS TIME_HIERARCHY.DAY     
       LEVEL MMYYYY IS TIME_HIERARCHY.MMYYYY     
       LEVEL QTR_YYYY IS TIME_HIERARCHY.QTR_YYYY     
       LEVEL YYYY IS TIME_HIERARCHY.YYYY     
HIERARCHY CUST_ROLLUP(CUST_ID CHILD OF ZIP_CODE CHILD OF REGION)     
HIERARCHY TIME_ROLLUP(DAY CHILD OF MMYYYY CHILD OF QTR_YYYY CHILD OF YYYY)     
ATTRIBUTE MMYYYY DETERMINES MON_YYYY;SELECT CUSTOMER_HIERARCHY.REGION,   
    TIME_HIERARCHY.YYYY,    
    SUM(SALES.SALES_AMOUNT) SALES_AMOUNT    
  FROM SALES, TIME_HIERARCHY, CUSTOMER_HIERARCHY    
 WHERE SALES.TRANS_DATE = TIME_HIERARCHY.DAY    
   AND SALES.CUST_ID = CUSTOMER_HIERARCHY.CUST_ID    
 GROUP BY CUSTOMER_HIERARCHY.REGION, TIME_HIERARCHY.YYYY;--DROP DIMENSION SALES_DIMENSION;
ALTER SYSTEM FLUSH buffer_cache;   
ALTER SYSTEM FLUSH SHARED_POOL;SELECT * FROM dba_dimensions;   
SELECT * FROM user_indexes WHERE index_type ='IOT - TOP';    
SELECT * FROM user_indextypes;SELECT * FROM TIME_HIERARCHY;   
SELECT * FROM CUSTOMER_HIERARCHY;

标签:CUSTOMER,删除,HIERARCHY,创建,SALES,YYYY,TIME,Oracle,SELECT
From: https://blog.51cto.com/emanlee/8229403

相关文章

  • Oracle EXP导出指定的一个表
     expuserid=zf/j@oracle9itables=xsxkbn file=xsxkb20110825_2.dmp     expuserid=zf/j@oracle9itables=(table1,table2,table3)file=xsxkb20110825_2.dmp   REF:https://community.oracle.com/thread/841934https://community.oracle.com/thread/1119117http:/......
  • Oracle查前几条记录方法
    Oralce的示例:1.最佳选择:利用分析函数      row_number()over(partitionbycol1orderbycol2)                              比如想取出100-150条记录,按照tname排序              selecttname,tabtypefrom(  ......
  • ASP.NET和Oracle连接问题的解决方法 - Unable to load DLL (oci.dll)
    以下适用于Windows2003:不少人在做ASP.NET+Oracle开发的时候都会碰到连接问题,提示“UnabletoloadDLL(oci.dll)”,但这个文件在系统中是存在的,很多人为此焦头烂额,我看到很多的帖子都是求助这个问题的。其实并非所有的人都会碰到这个问题,只在于用硬盘分区格式为NTFS的用户,既然oci.......
  • 用DELPHI 6登入ORACLE的问题Vendor initialization failed
    Vendorinitializationfailed.IFYOUUSEBDETOCONNECTTOORACLE, YOUCANTRYTHIS:1.OpenBDEAdministrator;2.GotoConfigurationTab3.OpenDrivers\Native\Oracle4.ifyouuseOracle8or8iClient,In"DLL32"Field,......
  • 安装oracle9i时碰到缺少或无效口令提示
    在即将结束安装的时候,oracle提示要输入sys密码和system密码,自己尝试了n次都不能成功,提示ora-00988:缺少或无效口令提示。在网上查找以后,发现oracle9i对密码有如下要求:系统用户(即sys,system)口令长度不能小于7个字符。并且第一个字符不能为数字。并且全部口令中需要数字+字......
  • 安装Oracle9i,遇到“File not found D: \oracle\ora92\ocs4j\admin\OCS4J.propert
    在安装Oracle9i,遇到“FilenotfoundD:\oracle\ora92\ocs4j\admin\OCS4J.properties”,点击忽略也能完成安装,但是又担心有不妥,于是四处查找答案,不过也没有看到对这个东东的解释。原因是Oracle安装版本中\DISK1\stage\Components\oracle.ocs4j\2.1.0.0.0a\1\DataFiles\Expanded......
  • Oracle 9i 启动OEM或OMS
    不过在登陆到oms之前,你必须首先安装oms服务。启动oracleuniversalinstaller,查看已安装产品,展开oracle主目录--oraHome92,如果没有oracle9imanagementandintegration,表示尚未安装。安装方法是:在oracleuniversalinstaller的可用产品列表中,选择安装oracle9imanagementandi......
  • Oracle中B-tree索引的访问方法(十一)-- 索引的分裂行为
    索引的分裂行为当某个索引块中要插入新的索引条目,但其中又没有可用空间时,就会发生索引的分裂。根据分裂发生所在的索引块类型的不同,可以分为在根块上发生的分裂,在分支块上发生的分裂和在叶子块上发生的分裂。下面,就这三种情况做分别介绍。从前面的实验中,我们已经看到,大约每个索引块......
  • Git创建远程分支并提交代码到远程分支
    1、可以通过gitbranch-r命令查看远端库的分支情况  动图演示(选择项目右键选择GitBashHere,然后输入命令gitbranch-r):  2、从已有的分支创建新的分支(如从master分支),创建一个dev分支  但此时并没有在远程仓库上创建分支如图所示还是只有一个master分支  ......
  • PyTorch Tensor创建方法
    PyTorch提供了多种方法来创建张量。以下是一些常见的创建张量的方式:创建未初始化的张量#创建一个未初始化的5x3张量x=torch.empty(5,3)创建零张量#创建一个5x3的零张量x=torch.zeros(5,3,dtype=torch.long)创建单位张量#创建一个5x5的单位张量(对角线上的元素......