WEB开发网
开发学院数据库Oracle Oracle中使用SQL MODEL定义行间计算 阅读

Oracle中使用SQL MODEL定义行间计算

 2007-05-10 12:20:26 来源:WEB开发网   
核心提示: 请注意,在上述结果中,Oracle中使用SQL MODEL定义行间计算(10),尽管接受了 1995–2002 年间的所有年份,您也只会看到 1999–2001 年的值,由于没有一种产品有 1998 年的值,因此在任何情况下,这是因为该表格只有这几年的数据,CV()

请注意,在上述结果中,尽管接受了 1995–2002 年间的所有年份,您也只会看到 1999–2001 年的值。这是因为该表格只有这几年的数据。CV() 函数将提供左侧当前引用的单元格的 DIMENSION BY 关键字当前值。当上述规则的左侧引用单元格 Bounce 和 1999 时,右侧表达式将如下所示: sales['Mouse Pad', 1999] + 0.2 * sales['Y Box', 1999]

同样,当左侧引用单元格 Bounce 和 2000 时,右侧表达式将为: sales['Mouse Pad', 2000] + 0.2 * sales['Y Box', 2000]

CV() 函数将维度关键字作为其参数。还可以使用不带任何参数的 CV()(如 CV()),在这种情况下,暗示了位置引用。以上规则还可以写为: s['Bounce', year BETWEEN 1995 AND 2002] =

s['Mouse Pad', cv()] + 0.2 * s['Y Box', cv()]

CV() 函数只能在右侧单元格引用中使用。

2.您希望计算出产品 Y Box、Bounce 和 Mouse Pad 在意大利的销售年增长率。从 SQL*Plus 会话中,执行以下脚本:

@c:wkdircvf2.sql
cvf2.sql 脚本包含以下内容: SELECT SUBSTR(country,1,20) country,
 SUBSTR(prod,1,15) prod, year, sales, growth
FROM sales_view
WHERE country='Italy'
MODEL RETURN UPDATED ROWS
  PARTITION BY (country)
  DIMENSION BY (prod, year)
  MEASURES (sale sales, 0 growth)
  RULES (
  growth[prod in ('Bounce','Y Box','Mouse Pad'), year between 1998 and 2001] =
  100* (sales[cv(prod), cv(year)] -
  sales[cv(prod), cv(year) -1] ) /
  sales[cv(prod), cv(year) -1] )
ORDER BY country, prod, year
/

请注意,结果中的空白单元格都是 NULL。如果没有前两年的产品值,那么规则将生成 NULL。由于没有一种产品有 1998 年的值,因此在任何情况下,1999 年的增长计算均为 NULL。

上一页  5 6 7 8 9 10 

Tags:Oracle 使用 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接