Oracle中使用SQLMODEL定义行间计算(2)

文章作者 100test 发表时间 2007:03:14 13:56:38
来源 100Test.Com百考试题网


4.现在,您可以创建 SALES_VIEW 视图。从 SQL*Plus 会话中,执行以下脚本:

@c:\wkdir\sample_data.sql 

sample_data.sql 脚本包含以下内容: CREATE VIEW sales_view AS

SELECT country_name country, prod_name prod, calendar_year year,

SUM(amount_sold) sale, COUNT(amount_sold) cnt

FROM sales, times, customers, countries, products

WHERE sales.time_id = times.time_id AND

sales.prod_id = products.prod_id 

AND sales.cust_id = customers.cust_id

AND customers.country_id = countries.country_id

GROUP BY country_name, prod_name, calendar_year

/

5.验证视图创建正确,并具有 3219 行。从 SQL*Plus 会话中,执行以下脚本:

@c:\wkdir\sel_sv.sql 



sel_sv.sql 脚本包含以下内容: SELECT COUNT(*) FROM sales_view.

6.要使性能最佳化,系统应当已经具有基于以上视图使用的数据构建的物化视图。该物化视图是在 SH 模式数据的安装期间创建的。Oracle 的摘要管理系统将使用上述视图自动重写所有查询,以便利用该物化视图。

查看示例语法

作为模型的初始示例,请考虑以下语句:

SELECT SUBSTR(country,1,20) country, 

   SUBSTR(prod,1,15) prod, year, sales

FROM sales_view

WHERE country IN (Italy,Japan)

   MODEL RETURN UPDATED ROWS

     PARTITION BY (country) 

     DIMENSION BY (prod, year)

     MEASURES (sale sales)

     RULES (

       sales[Bounce, 2002] = sales[Bounce, 2001]   sales[Bounce, 2000],

       sales[Y Box, 2002] = sales[Y Box, 2001],

       sales[2_Products, 2002] = sales[Bounce, 2002]   sales[Y Box, 2002])

ORDER BY country, prod, year.

结果是:

COUNTRY              PROD                 YEAR       SALES

-------------------- --------------- ---------- ----------

Italy                2_Products            2002   90387.54

Italy                Bounce                2002    9179.99

Italy                Y Box                 2002   81207.55

Japan                2_Products            2002  101071.96

Japan                Bounce                2002   11437.13

Japan                Y Box                 2002   89634.83

因为该语句按照国家/地区划分,所以这些规则一次应用于一个国家/地区的数据。请注意,数据结束于 2001 年,因此为 2002 年或之后年份定义值的任何规则都将插入新单元格。第一个规则将 2002 年 Bounce 的销售定义为 2000 年和 2001 年的销售总和。第二个规则将 2002 年 Y Box 的销售定义为 2001 年的销售值。第三个规则定义了一个名为 2_Products 的类别,它是 2002 年的 Bounce 与 Y Box 值相加所得的总和。请注意,2_Products 的值派生自前两个规则的结果,因此这两个规则必须在 2_Products 规则之前执行。

语法准则

请注意,MODEL 关键字后面的 RETURN UPDATED ROWS 子句将结果限制为在该查询中创建或更新的那些行。使用该子句是使结果集只包含新计算的值的简便方法。在整个示例中,都将用到 RETURN UPDATED ROWS 子句。


相关文章


入门基础:认识OracleSQL内置函数(1)
用Oracle闪回功能恢复偶然丢失的数据(2)
用Oracle闪回功能恢复偶然丢失的数据(1)
Oracle中使用SQLMODEL定义行间计算(3)
Oracle中使用SQLMODEL定义行间计算(2)
Oracle中使用SQLMODEL定义行间计算(1)
ORACLE中常用的SQL语法和数据对象
教你用Linux完成Oracle自动物理备份
Oracle不同数据库间的对比分析脚本
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛