首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写OLAP查询

编写OLAP查询
EN

Stack Overflow用户
提问于 2012-12-16 10:01:31
回答 1查看 9.3K关注 0票数 3

我有一个我正在做的项目,需要以下几点:

  1. 创建规范化示例rdbms (5个表)
  2. 使用Java,我向每个表输入了100万行数据
  3. 在规范化表上运行两个OLTP和两个OLAP查询。
  4. 非正态表
  5. 对它们运行相同的OLTP和OLAP查询并比较时间。

OLAP查询是什么意思?我已经搜索过互联网,我所能找到的就是我必须做一个立方体,并在它上应用查询。如何在RDBMS上编写OLAP查询?我有一个示例:表标准化(订单、产品、客户、分公司、销售)

  1. 销售:order_id,product_id,quantity
  2. 产品:product_id,名称,描述,价格,sales_tax
  3. 客户:customer_id,f_name,l_name,tel_no,addr,nic,city
  4. 分公司:branch_id,name,tel_no,addr,city
  5. 订单:order_id,customer_id,order_date,branch_id

我想在上面的表上写一个OLAP查询。我将Oracle Express与SQL Developer结合使用。

EN

回答 1

Stack Overflow用户

发布于 2012-12-16 10:25:55

有些SQL函数有时被称为“分析”、“窗口”或"OLAP",这取决于您使用的RDBMS。在某些场景中,它们可以提供巨大的性能改进,通常是比较同一组数据中的行,否则需要进行自连接。

当你使用甲骨文的时候,我会衷心地建议你访问asktom.oracle.com并搜索“分析岩石”--你会发现一些很好的例子,这些例子解释得很好,而且比仅仅阅读就在这里。文档要容易得多。

注意:它们不是严格的“关系”,因为关系理论没有处理元组的顺序;它们是在查询的其他部分之后执行的--即在过滤和聚合之后;它们在较小程度上由某些数据库实现。

我看到Oracle也有一个单独的OLAP产品来处理多维数据集,但是这是企业版的一个单独的许可选项,所以如果您使用Express版本,我不认为这就是您所指的。

编辑

这里有一个简单的例子,它大致基于您的数据模型,它显示了如何使用分析函数来获得运行的总数,没有它们并不简单:-

代码语言:javascript
复制
select 
o.customerid, 
o.orderid, 
o.orderdate, 
p.price, 
sum (p.price) over (partition by o.customerid order by o.orderdate) running_total

from orders o
inner join sales s on o.orderid = s.orderid
inner join product p on s.productid = p.productid

这给出了(对于我输入的一些简单数据):

代码语言:javascript
复制
CUSTOMERID           ORDERID              ORDERDATE PRICE RUNNING_TOTAL
-------------------- -------------------- --------- ----- -------------
1                    1                    01-JAN-12    30            30 
1                    2                    01-MAR-12    30            60 
1                    3                    01-APR-12    30            90 
1                    4                    01-MAY-12    30           120 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13900229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档