首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OBIEE TOPN显示功能

OBIEE TOPN显示功能
EN

Stack Overflow用户
提问于 2014-09-22 16:21:36
回答 2查看 4.4K关注 0票数 0

OBIEE中的TOPN显示功能是如何工作的?我如何使用SQL Server来实现这一点?

代码语言:javascript
复制
where TOPN(N,10) <= 10)

这是我的问题

代码语言:javascript
复制
SELECT
  N,
  SUM(column),
  REPORT_SUM(SUM(column) BY N)
FROM 
  TABLE
WHERE
  (TOPN(N,10) <= 10)
EN

回答 2

Stack Overflow用户

发布于 2014-09-24 23:41:39

请参阅http://gerardnico.com/wiki/dat/obiee/topn

topn函数在criteria列公式中使用,但其结果是较小的数据集。如果使用topn(column,10),结果集将只有10行。

topn函数不会被传递回数据库,但会向数据库发送一个适当的查询。例如,对于Oracle RDBMS,一个子查询包含排名函数和基于排名的外部查询过滤器。

它向SQLServer提交了什么查询?我不知道,也许其他人能回答。

票数 2
EN

Stack Overflow用户

发布于 2014-09-22 19:24:08

从OBIEE的角度来看,TOPN函数允许OBIEE执行TOPN分析。Top 'N‘Analysis指的是从结果集中获取前n行(例如找到按薪资排名前三位的员工)。将TOPN作为公式列添加到答案中时,将自动筛选数据。您不需要添加任何特殊的TOPN过滤器。

表达式如下:

代码语言:javascript
复制
TOPN (n_expression, n)

其中:

  • n_expression是计算为数值的任何表达式。
  • n是TopN的N,它是任何正整数。它表示结果集中显示的排名的前几位,1表示最高排名。

注意,一个查询只能包含一个TOPN表达式。

下面是输入的公式的屏幕截图,以及从OBIEE为该公式向数据库发出的物理SQL:

SELECT DISTINCT D1.c1 AS c1, D1.c2 AS c2, D1.c3 AS c3 FROM (SELECT DISTINCT 0 AS c1, D1.c1 AS c2, CASE WHEN CASE WHEN D1.c2 IS NOT NULL THEN RANK () OVER (ORDER BY D1.c2 DESC NULLS LAST) END <= 8 THEN CASE WHEN D1.c2 IS NOT NULL THEN RANK () OVER (ORDER BY D1.c2 DESC NULLS LAST) END END AS c3 FROM ( SELECT SUM (T428861.POUND_AMT) AS c1, T428861.PURCH_ORDER_NUM AS c2 FROM WC_ASN_SHIP_F T428861 WHERE (T428861.FINAL_SAMPLE_FLG = 'Y' AND T428861.DELETE_FLG = 'N') GROUP BY T428861.PURCH_ORDER_NUM) D1) D1 WHERE (D1.c3 <= 8) ORDER BY c1

http://gerardnico.com/wiki/dat/obiee/topn

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25969552

复制
相关文章

相似问题

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