@RANK Function - Help!

I am using the following function in my outline which is 2 pass calc: It ranks the sales of associates.@RANK(SKIPMISSING,Sales, @RANGE(Sales,@LEVMBRS(EMPLOYEES,0)));It works fine on upperlevel time dimension members that are dynamic calc, but it fails miserably on the "0" level members of Time (for example it will give a ranking to several members of "3" which have very different sales figures). It also fails when upperlevel members of Time are stored (as opposed to dynamic calc)Does anyone know what the porblem is and how I get @RANK to work with zero level Time members?Thanks

Seth/AndyOut of curiosity, is "EMPLOYEES" a sparse or dense dimension, what's the size of it?I worked with @RANK and @RANGE in a way similar to your setting, but I had to make my equivalent to your "EMPLOYEES" a dense dimension (about 4000 leaf level members), that make the block very sparse.The member where the formula applied can be stored or dynamic calc in my case.I got the recursion limit if I set the "EMPLOYEES" dimension as sparse.ThanksSteven

Similar Messages

  • Help on Dense Rank Function

    Hello All,
    Below is the sql i am trying to execute and the Dense Rank function is giving same result for all of the rows, could you please help me where i am doing wrong
    SELECT
    AMT,
    DENSE_RANK() OVER (PARTITION BY AMT ORDER BY AMT DESC) AS DENSE_RANK
    FROM
    SELECT DISTINCT
    SUM(NVL(TRUNC(NET_AMT) * NVL(GLOBAL1_EXCHANGE_RATE,1),0))
    OVER (PARTITION BY CUSTOMER_BILL_TO_LOC_WID ORDER BY CUSTOMER_BILL_TO_LOC_WID)
    AS AMT
    FROM
    W_SALES_BOOKING_LINE_F
    WHERE
    SALES_ORDER_NUM IN ('10612426','10612450','10612477','32649203')
    AND
    X_MONTH_WID=TO_CHAR(SYSDATE-1,'YYYYMMDD')
    )--ORDER BY AMT DESC Result Set:
    AMT     DENSE_RANK
    0     1
    2,855     1
    6,706     1
    14,265     1

    you have "broken" up your resultset (from the inline view) by AMT (PARTITION BY AMT)
    and per part, you sort this (one row in each partition, not a whole lot of sorting) ( ORDER BY AMT DESC)
    then you assign a ranking based on the sorting action... which yields 1 (DENSE_RANK)
    Are you looking for this
    SELECT
    AMT,
    DENSE_RANK() OVER (ORDER BY AMT DESC) AS DENSE_RANK
    FROM
    SELECT DISTINCT
    SUM(NVL(TRUNC(NET_AMT) * NVL(GLOBAL1_EXCHANGE_RATE,1),0))
    OVER (PARTITION BY CUSTOMER_BILL_TO_LOC_WID ORDER BY CUSTOMER_BILL_TO_LOC_WID)
    AS AMT
    FROM
    W_SALES_BOOKING_LINE_F
    WHERE
    SALES_ORDER_NUM IN ('10612426','10612450','10612477','32649203')
    AND
    X_MONTH_WID=TO_CHAR(SYSDATE-1,'YYYYMMDD')
    )--ORDER BY AMT DESC

  • Help with ranking function

    /*below is the table format and data I have */
    Create
    table Result(name
    varchar(50),Subject
    varchar(20),Marks
    int)
    insert
    into Result
    values('Adam','Maths',70)
    insert
    into Result
    values
    ('Adam','Science',80)
    insert
    into Result
    values
    ('Adam','Social',60)
    insert
    into Result
    values('Tom','Maths',60)
    insert
    into Result
    values
    ('Tom','Science',50)
    insert
    into Result
    values
    ('Tom','Social',70)
    insert
    into Result
    values('Sam','Maths',90)
    insert
    into Result
    values
    ('Sam','Science',90)
    insert
    into Result
    values
    ('Sam','Social',80)
    Since Same has the highest marks
    , I want
    TO display Sam
    FIRST
    AND
    THEN list
    ALL his marks.
    THEN
    Adam has SECOND highest marks so I want
    TO display Adam
    AND
    THEN
    ALL his marks
    along
    WITH this I also want
    TO
    RANK each ROW
    below is my result set :
    Name  subject  marks  rank
    Sam Maths 90 1
    Sam Science 90 1
    Sam Social 80 3
    Adam Maths 80 4
    Adam Science 70 5
    Adam Social 60 6
    Tom Social 70 7
    Tom Maths 60 8
    Tom Science 50 9

    I'm using ranking function to get the desired result set . But its not working .
    here is what I'm using :
    select
    Name,Subject,Marks,
    RANK
    ()over(partitionbynameorderbyMarksdesc)Rank
    From
    Result
    order
    byname,subject

  • How to use "Rank" function  in Oracle?

    I need to display Top 15 records by using rank function.
    Here is my query...I need to pull top 15 FAQ's using the below query.. How can I use RANK function to display the Top 15 FAQ"s in the list.
    Select  distinct SUb1.FAQ,Sub1.FAQ_Hits,GU.display_Name_FMLS as displayname,ev.ParentLinkrecordid,ev.userid from User GU
    Join Event ev
    ON LOWER (ev.userid) IN (LOWER (GU.lanid), LOWER (Gu.racfid))
    Join (Select distinct sm.stem as FAQ,Sum(ev.Eventresults) as FAQ_Hits,ev.ParentLinkrecordid as Topic_ID from Event ev
    Join SubjectMatter sm
    ON (TO_CHAR (sm.smrecordid) = ev.eventdetail1) AND ev.eventdetail1 IS NOT NULL AND sm.smtype = 1
    Where (Upper(ev.eventsubtype) in (Upper('FAQ'),Upper('OPENFAQ')))
    AND TO_DATE (eventdatetime, 'yyyy-mm-dd hh24:mi:ss') >= TO_DATE ('20100601', 'yyyymmdd')
    and TO_DATE (eventdatetime, 'yyyy-mm-dd hh24:mi:ss') <= TO_DATE ('20100831', 'yyyymmdd')
    Group by sm.stem,ev.Parentlinkrecordid
    order by FAQ )sub1
    ON Sub1.Topic_ID = ev.ParentLinkrecordid)

    A few bits that I noticed in the query ...
    in (Upper('FAQ'),Upper('OPENFAQ'))1) Do you really a upper for a string which is already in upper case.
    Select distinct sm.stem as FAQ,Sum(ev.Eventresults) as FAQ_Hits,ev.ParentLinkrecordid as Topic_ID2) Do you need a distinct when you are using a GROUP function viz. SUM ?
    You rank query is as follows, I am not very good at the ANSI style JOIN so changed it slightly ... :-)
    Also notice the usage rank function in the "sub1" query.
    select distinct sub1.faq,
                    sub1.faq_hits,
                    gu.display_name_fmls as displayname,
                    ev.parentlinkrecordid,
                    ev.userid
    from user gu, event ev,
      (select rank() over (order by sum(ev.eventresults) desc) rnk,
              sum(ev.eventresults) as faq_hits,
              sm.stem as faq,         
              ev.parentlinkrecordid as topic_id
         from event ev, subjectmatter sm
        where (to_char(sm.smrecordid) = ev.eventdetail1)
          and ev.eventdetail1 is not null
          and sm.smtype = 1
          AND upper(ev.eventsubtype) in ('FAQ', 'OPENFAQ')
          and to_date(eventdatetime, 'yyyy-mm-dd hh24:mi:ss') >= to_date('20100601', 'yyyymmdd')
          and to_date(eventdatetime, 'yyyy-mm-dd hh24:mi:ss') <= to_date('20100831', 'yyyymmdd')
        group by sm.stem, ev.parentlinkrecordid
        order by faq) sub1
    where lower(ev.userid) in (lower(gu.lanid), lower(gu.racfid))
      and sub1.topic_id = ev.parentlinkrecordid)
      and sub1.rnk <= 15;Like mentioned above, some sample data would have helped.

  • Rank function without filter in the report

    Hi,
    I have a problem with Rank() function. The problem is the next one.
    I have a table with this rows:
    User | DATE | Cost
    user1 | 12/02/2011 | 10,4
    user1 | 13/02/2011 | 11,1
    user1 | 13/02/2011 | 10,1
    user1 | 13/02/2011 | 8,1
    user2 | 12/02/2011 | 1,4
    user2 | 13/02/2011 | 12,1
    user2 | 13/02/2011 | 22,1
    user2 | 13/02/2011 | 8,1
    In the rpd I have a agregate row as SUM(COST), and I need extract te ranking of this SUM(COST) per user, The sum of user1 is 39,7 and the sum of the user 2 is 43,7. If I show in the report all users, the ranking is correct Rank=1 per user2 and Rank=2 per user1, but the problem is that I only want show the user1, when I add a filter to the report user='user1' the ranking value changes from 2 to 1. I need that the ranking value doesn´t change when I introduce a filter.
    Any idea about how to solve this problem?
    Thanks

    Hi Antonio,
    On the Rank column in the answers edit the formula as given below.
    Case when username = 'user2' then Rank(sum(cost)) else 0 end
    Then apply a filter on the Rank column as Rank > 0.
    I hope this one helps you.
    Regards
    AP

  • Rank function

    how to use the RANK function in oracle data integrator??

    Hi,
    a little google could help you..
    https://forums.oracle.com/thread/2158588
    Let us know

  • Rank Function taking a long time to execute in SAP HANA

    Hi All,
    I have a couple of reports with rank function which is timing out/ or taking a really long time to execute, Is there any way to get the result in less time when rank functions are involved?
    the following is a sample of how the Query looks,
    SQL 1:
    select      a.column1,
                    b.column1,
                    rank () over(partition by a.column1 order by sum(b.column2) asc)
    from         "_SYS_BIC"."Analyticview1"         b
                    join          "Table1"            a
                      on          (a.column2 = b.column3)
    group by  a.column1,
    b.column1;
    SQL 2:
    select    a.column1,
                    b.column1,
                    rank () over( order by min(b.column1) asc) WJXBFS1
    from         "_SYS_BIC"."Analytic view2"         b
                    cross join                "Table 2"               a
    where      (a.column2  like '%a%'
    and b.column1  between 100 and 200)
    group by  a.column1,
                    b.column1
    when I visualize the execution plan,the rank function is the one taking up a longer time frame. so I executed the same SQL without the rank() or partition or order by(only with Sum() in SQL1 and Min() in SQL 2) even that took a around an hour to get the result.
    1.Does anyone have an any idea to make these queries to execute faster?
    2. Does the latency have anything to do with the rank function or could it be size of the result set?
    3. is there any workaround to implement these rank function/partition inside the Analytic view itself? if yes, will this make it give the result faster?
    Thank you for your help!!
    -Gayathri

    Krishna,
    I tried both of them, Graphical and CE function,
    It is also taking a long time to execute
    Graphical view giving me the following error after 2 hr and 36 minutes
    Could not execute 'SELECT ORDER_ID,ITEM_ID,RANK from "_SYS_BIC"."EMMAPERF/ORDER_FACT_HANA_CV" group by ...' in 2:36:23.411 hours .
    SAP DBTech JDBC: [2048]: column store error: search table error:  [2620] executor: plan operation failed
    CE function - I aborted after 40 mins
    Do you know the syntax to declare local variable to use in CE function?

  • Sql tuning using rank function

    Hi,
    Can someone help me in writing the below qry using rank() function?
    DELETE FROM stc_calllog_ext a
    WHERE a.stc_save_status = 'CT'
    AND ROWID IN (SELECT a.ROWID
    FROM stc_calllog_ext a, calllog_ext b
    WHERE a.prod_line_code= b.prod_line_code
    AND a.brand_code = b.brand_code
    AND a.model_number = b.model_number
    AND a.stc_save_status != b.stc_save_status
    AND trunc(a.stc_start_time) = trunc(b.stc_start_time)
    AND a.stc_start_time BETWEEN TRUNC(SYSDATE-8) AND TRUNC(SYSDATE)
    AND a.call_taker_userid = b.call_taker_userid
    AND a.cons_telephone_no =b.cons_telephone_no
    )

    With the information you have provided, I've come up with the following.
    SELECT A.ACCOUNT_NO, A.PAYMENT_TYPE, A.INSTALLMENT_TYPE, A.DATE_CHANGE
    FROM
        (SELECT account_no, payment_type, installment_type, date_change,
                LEAD( (payment_type), 1)
                     over (partition by account_no order by account_no, DATE_CHANGE)  LEAD_PAY,
                LEAD( (installment_type), 1)
                     over (partition by account_no order by account_no, DATE_CHANGE)  LEAD_INST
          from T_ACCNTS ) A
    WHERE A.PAYMENT_TYPE <> NVL(A.LEAD_PAY,99)
       OR A.INSTALLMENT_TYPE <> NVL(A.LEAD_INST,99)
    ORDER BY 1, 4;

  • Error using Rank function in Answers

    Hi All,
    Am trying to generate a report in Answers which lists Top Accounts with Revenue.
    I Ranked the Revenue field and it is returning me correct values. ( Rank(account.revenue) )
    But, when I try to filter on this field and restrict the rows which shows only top 10 Accounts, it is returning the following error:
    State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 17001] Oracle Error code: 1792, message: ORA-01792: maximum number of columns in a table or view is 1000 at OCI call OCIStmtExecute. [nQSError: 17010] SQL statement preparation failed. (HY000)
    Can any one help me on this.
    Thanks in Advance,
    Imtiaz.

    Hi Joe,
    This is the Physical query generated when I use Rank function and the report is fine.
    select distinct D1.c1 as c1,
    D1.c2 as c2,
    D1.c3 as c3,
    D1.c4 as c4,
    D1.c5 as c5,
    D1.c6 as c6,
    D1.c7 as c7,
    D1.c8 as c8,
    D1.c9 as c9,
    D1.c10 as c10,
    D1.c11 as c11,
    D1.c12 as c12,
    D1.c13 as c13,
    D1.c14 as c14,
    D1.c15 as c15
    from
    (select D1.c1 as c1,
    D1.c2 as c2,
    D1.c3 as c3,
    D1.c4 as c4,
    D1.c5 as c5,
    D1.c6 as c6,
    D1.c7 as c7,
    D1.c8 as c8,
    D1.c9 as c9,
    D1.c10 as c10,
    D1.c11 as c11,
    D1.c12 as c12,
    D1.c13 as c13,
    D1.c14 as c14,
    D1.c15 as c15
    from
    (select Case when D1.c1 is not null then Rank() OVER ( ORDER BY D1.c1 DESC NULLS LAST ) end as c1,
    D1.c2 as c2,
    D1.c3 as c3,
    D1.c1 as c4,
    D1.c4 as c5,
    D1.c5 as c6,
    D1.c6 as c7,
    D1.c7 as c8,
    D1.c8 as c9,
    D1.c9 as c10,
    D1.c10 as c11,
    D1.c11 as c12,
    D1.c12 as c13,
    D1.c13 as c14,
    D1.c14 as c15,
    ROW_NUMBER() OVER (PARTITION BY D1.c1, D1.c2, D1.c3, D1.c4, D1.c5, D1.c6, D1.c7, D1.c8, D1.c9, D1.c10, D1.c11, D1.c12, D1.c13, D1.c14 ORDER BY D1.c1 ASC, D1.c2 ASC, D1.c3 ASC, D1.c4 ASC, D1.c5 ASC, D1.c6 ASC, D1.c7 ASC, D1.c8 ASC, D1.c9 ASC, D1.c10 ASC, D1.c11 ASC, D1.c12 ASC, D1.c13 ASC, D1.c14 ASC) as c16
    from
    (select distinct T690.SUM_REVN_AMT as c1,
    T690.NAME as c2,
    T2216.NAME as c3,
    T690.X_PETROFAC_REVN as c4,
    T690.SUM_WIN_PROB as c5,
    T690.X_PERCENT_GET as c6,
    T690.SUM_WIN_PROB * T690.X_PERCENT_GET / nullif( 100, 0) as c7,
    T690.X_EC_PRIORITY as c8,
    T19028.LOGIN as c9,
    T690.X_COUNTRY as c10,
    T690.X_REGION as c11,
    T18311.NAME as c12,
    T18641.NAME as c13,
    T18238.NAME as c14
    from
    SIEBEL.S_BU T18238 left outer join (
    SIEBEL.S_USER T19028 left outer join (
    SIEBEL.S_OPTY T690 left outer join SIEBEL.S_STG T2216 On T690.CURR_STG_ID = T2216.ROW_ID) left outer join SIEBEL.S_ORG_EXT T1189 On T690.PR_DEPT_OU_ID = T1189.ROW_ID) left outer join SIEBEL.S_ORG_EXT T18311 /* Competitor */ On T690.PR_CMPT_OU_ID = T18311.ROW_ID) left outer join SIEBEL.S_ORG_EXT T18641 /* Partner */ On T690.PR_PRTNR_ID = T18641.ROW_ID) left outer join SIEBEL.S_POSTN T19114 On T690.PR_POSTN_ID = T19114.PAR_ROW_ID) left outer join SIEBEL.S_OPTY_BU T18280 On T690.ROW_ID = T18280.OPTY_ID) left outer join SIEBEL.S_OPTY_X T19415 On T690.ROW_ID = T19415.PAR_ROW_ID) On T19028.PAR_ROW_ID = T19114.PR_EMP_ID) On T18238.ROW_ID = T18280.BU_ID
    ) D1
    ) D1
    where ( D1.c16 = 1 )
    ) D1
    order by c1 desc
    But When I apply Filter on this Rank column then it gives me the error. THis is the Physical query for that
    select distinct Case when D1.c1 is not null then Rank() OVER ( ORDER BY D1.c1 DESC NULLS LAST ) end as c1,
    D1.c2 as c2,
    D1.c3 as c3,
    D1.c1 as c4,
    D1.c4 as c5,
    D1.c5 as c6,
    D1.c6 as c7,
    D1.c7 as c8,
    D1.c8 as c9,
    D1.c9 as c10,
    D1.c10 as c11,
    D1.c11 as c12,
    D1.c12 as c13,
    D1.c13 as c14,
    D1.c14 as c15
    from
    (select D1.c1 as c1,
    D1.c2 as c2,
    D1.c3 as c3,
    D1.c4 as c4,
    D1.c5 as c5,
    D1.c6 as c6,
    D1.c7 as c7,
    D1.c8 as c8,
    D1.c9 as c9,
    D1.c10 as c10,
    D1.c11 as c11,
    D1.c12 as c12,
    D1.c13 as c13,
    D1.c14 as c14
    from
    (select T690.SUM_REVN_AMT as c1,
    T690.NAME as c2,
    T2216.NAME as c3,
    T690.X_PETROFAC_REVN as c4,
    T690.SUM_WIN_PROB as c5,
    T690.X_PERCENT_GET as c6,
    T690.SUM_WIN_PROB * T690.X_PERCENT_GET / nullif( 100, 0) as c7,
    T690.X_EC_PRIORITY as c8,
    T19028.LOGIN as c9,
    T690.X_COUNTRY as c10,
    T690.X_REGION as c11,
    T18311.NAME as c12,
    T18641.NAME as c13,
    T18238.NAME as c14,
    Case when T690.SUM_REVN_AMT is not null then Rank() OVER ( ORDER BY T690.SUM_REVN_AMT DESC NULLS LAST ) end as c15
    from
    SIEBEL.S_BU T18238 left outer join (
    SIEBEL.S_USER T19028 left outer join (
    SIEBEL.S_OPTY T690 left outer join SIEBEL.S_STG T2216 On T690.CURR_STG_ID = T2216.ROW_ID) left outer join SIEBEL.S_ORG_EXT T1189 On T690.PR_DEPT_OU_ID = T1189.ROW_ID) left outer join SIEBEL.S_ORG_EXT T18311 /* Competitor */ On T690.PR_CMPT_OU_ID = T18311.ROW_ID) left outer join SIEBEL.S_ORG_EXT T18641 /* Partner */ On T690.PR_PRTNR_ID = T18641.ROW_ID) left outer join SIEBEL.S_POSTN T19114 On T690.PR_POSTN_ID = T19114.PAR_ROW_ID) left outer join SIEBEL.S_OPTY_BU T18280 On T690.ROW_ID = T18280.OPTY_ID) left outer join SIEBEL.S_OPTY_X T19415 On T690.ROW_ID = T19415.PAR_ROW_ID) On T19028.PAR_ROW_ID = T19114.PR_EMP_ID) On T18238.ROW_ID = T18280.BU_ID
    ) D1
    where ( D1.c15 <= 10 )
    ) D1
    order by c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15
    Thanks,
    Imtiaz

  • Filter on Rank function 10g

    Hi Friends,
    Need your help. Please!!!
    I have used the RANK function to know the different Start, end date period for a Enrollment.NO.
    What I want next is to show only the Enroll No, start, end date for a Enrollment No. with the earliest start date, end date. i.e Max(Rank) for that enrollment No.
    for RANK column I have used the function RANK("Start Date" by "EnRoll No")
    EnRoll No.      Start Date,      End Date,                  Rank
    BAD-002     01-Oct-12     31-Dec-12     1
              01-Jul-12     30-Sep-12     2
              01-Apr-12     30-Jun-12     3
    RIS-401     01-Dec-06     28-Feb-07     1
              01-Sep-06     30-Nov-06     2
              01-Jun-06     31-Aug-06     3
              01-Mar-06     31-May-06     4
              01-Dec-05     28-Feb-06     5
              01-Sep-05     30-Nov-05     6
              01-Jun-05     31-Aug-05     7
              01-Mar-05     31-May-05     8
              01-Dec-04     28-Feb-05     9
    RCB-235     01-Dec-08     28-Feb-09     1
              01-Sep-08     30-Nov-08     2
              01-Jun-08     31-Aug-08     3
              01-Mar-08     31-May-08     4
              01-Dec-07     29-Feb-08     5
              01-Sep-07     30-Nov-07     6
              01-Jun-07     31-Aug-07     7
              01-Mar-07     31-May-07     8
              01-Dec-06     28-Feb-07     9
              01-Sep-06     30-Nov-06     10
              01-Jun-06     31-Aug-06     11
              01-Mar-06     31-May-06     12
              01-Dec-05     28-Feb-06     13
              01-Sep-05     30-Nov-05     14
    My desired output is:
    EnRoll No.     Start Date     End Date     Rank
    BAD-002     01-Apr-12     30-Jun-12     3
    RIS-401     01-Dec-04     28-Feb-05     9
    RCB-235     01-Sep-05     30-Nov-05     14
    Please help me. Its urgent. I am struck at this point.
    Many Thanks in advance.
    Aachala

    Hi Aachala,
    Add the following to your filter and you should be all set...
    MAX(RANK("Start Date" by "EnRoll No") by "EnRoll No") = RANK("Start Date" by "EnRoll No") by "EnRoll No")
    JB

  • Rank function breaks drill down 11g

    I have a simple drill down report standard hierarchy and am having a weird issue with the rank function.
    This report works on 10g but the upgraded 11g version does not.
    When I drill down past the 2nd level it adds an is null filter to the revenue column.  This is also the column we are using to base our rank function.
    If I move the rank column to the first or last position in the table the drills work perfectly.  If I move it to the second column it breaks on the first drill instead of the 2nd.
    It works perfectly if drilling on the headings instead of the values.  That seems to point to some sort of null coming through when being passed.  I've tried using an ifnull and a case statement and neither method works, it just applies the is null filter to the entire column formula.
    The client doesn't want to change the position of the rank column so that work around will not do.  Any ideas?

    A similar thread was recently talked about here:
    In OBIEE charts, how do you make drill downs work on custom formulas?
    With a calculated column, you need to make sure the source query and destination query have the EXACT same formula and the same name for the field. If it is not 100% identical, it may not work correctly. (I typically use the NAVIGATE function to get to the second query rather than the Drill function.)
    Now in some cases, if you try to create a second drill down query with more details in it, the original formula doesn't work the way you want it to. The calculated formulas have to make sense in both source query and destination query in order to work properly. If you have a ranking of the Top 5 Products in the source query, the destination query also has to have the same ranking of Top 5 products in order to work. If you add more fields into the destination query (e.g., adding on product attributes, or # of records associated with that product name etc.), then sometimes the ranking / aggregation in the destination doesn't add up the same way. This causes the system to think that the formulas are different and prevents the drill down.
    I managed to get around this by having a 3rd query in between the original summary view and the detailed data view. So the sequence would be (for example):
    - Dashboard based summary query (including the calculated ranked product names formula)
    - drill down into virtually identical query (add on one slight bit of difference here, for example adding on a second Product Name field ... not a calculated version, but the actual name). Create a drill down this time by clicking on the regular Product Name field (don't drill down on the custom formula)
    - final detailed drill-down query
    You can format this intermediary drill down query to explain to users that they need to click a second time.
    It's not ideal, but it should work. Hope this helps.
    Ted

  • Rank function use in MDX

    Hi Expert,
    Could you please let me know how can I use rank function in MDX to achieve the result in below format. Highest value should be ranked as 1
    Actual/Expected Dataset appears as:
    Thanks Chandan

    Hi C,
    You can use the mdx RANK() function. For example, this query has ranking of cities by sales amount. You could create two sets, and two calcs with RANK() functions for your challenge.
    WITH
    SET OrderedCities AS Order
    ([Geography].[City].[City].members
    , [Measures].[Reseller Sales Amount], BDESC
    MEMBER [Measures].[City Rank] AS Rank
    ([Geography].[City].CurrentMember, OrderedCities)
    SELECT {[Measures].[City Rank],[Measures].[Reseller Sales Amount],[Measures].[City Rank]} ON 0
    ,[Geography].[City].[City].MEMBERS
    ON 1
    FROM [Adventure Works]
    Hope that helps,
    Richard

  • Compile forms error because using rank function

    Hi,
    Oracle Form 9i don't known rank function in my SQL statement. When compile forms, it alerts err message: "Encountered the symbol "(" when expecting one ..."
    code:
    select * from (
    select group_id, acct_no, acct_desc, rank() over(order by acct_no desc) rank_no from customer
    where group_id='002'
    ) where rank_no< 10000
    Help me ASAP.
    Many thank,
    Bum.

    Where is INTO clause ? Plz provide the actual code you are writing.
    I think this type of queries not supported in Forms 9i.....try forms 10g or above.

  • MDX Rank function

    I am having some trouble getting expected results when using the RANK function. My MDX is below with the result set that gets created. 
    The [SF OCC Rank] results are correct but the [Net Rentals Rank] is not.  I am wanting to rank each of the measures to be able to identify which Site is ranked highest in [SF Occ %] and then which site is ranked highest in [Net Rentals].
    My data has in total 43 sites.  In my filter I am limiting it to the Sites in [Site Groups].[Site Group Name].&[12].  There are only 14 sites that should display.  It looks like the [Net Rentals Rank] is ranking all 43 sites instead of
    just the 14 that I am wanting. 
    Any help is greatly appreciated.  Thanks!
    WITH
    MEMBER [Measures].[SF Occ Rank] as RANK(([Unit].[Site Name].CurrentMember),ORDER(([Unit].[Site Name].[Site Name].Members),[Measures].[SF Occ %], BDESC))
    MEMBER [Measures].[Net Rentals Rank] as RANK(([Unit].[Site Name].CurrentMember),ORDER(([Unit].[Site Name].[Site Name].Members),[Measures].[Net Rentals], BDESC))
    select {[Measures].[SF OCC %],[Measures].[SF Occ Rank],
               [Measures].[Net Rentals], [Measures].[Net Rentals Rank]} on COLUMNS,
        filter( [Unit].[Site Name].[Site Name].Members,[Site Groups].[Site Group Name].&[12]) on ROWS
    from [CUBE]
    where ( [Date].[Calendar].[Month of Year].&[201412],[Site Groups].[Site Group Name].&[12])

    Hi rocko,
       You are correct the Net Rentals Rank will be calculated for all the Sites and will display the result for the current Sites being selected. Do some changes to the query so that you will get the ranks for only the sites you selected. 
    WITH
    MEMBER [Measures].[SF Occ Rank] as RANK(([Unit].[Site Name].CurrentMember),ORDER(([Unit].[Site Name].[Site Name].Members),[Measures].[SF Occ %], BDESC))
    MEMBER [Measures].[Net Rentals Rank] as RANK([Unit].[Site Name].CurrentMember,ORDER( Exists( [Unit].[Site Name].[Site Name].Members,[Site Groups].[Site Group Name].&[12]),[Measures].[Net Rentals], BDESC))
    select {[Measures].[SF OCC %],[Measures].[SF Occ Rank],
               [Measures].[Net Rentals], [Measures].[Net Rentals Rank]} on COLUMNS,
        Exists( [Unit].[Site Name].[Site Name].Members,[Site Groups].[Site Group Name].&[12]) on ROWS
    from [CUBE]
    where ( [Date].[Calendar].[Month of Year].&[201412],[Site Groups].[Site Group Name].&[12])
    Regards,
    Venkata Koppula

  • Reporting-Top 10 and Rank() function

    Need to modify Top 10 Opportunities Pre-defined analysis report. In doing so, we loose the drop down Fiscal Qtr/Year. The only option is to create a Pivot table, and use Fiscal Qtr/Year as a selector. The issue is that I need to be able to retrieve the Top 10 for every Quarter/Year. What is happening now is that the report is pulling Top 10 Opportunities for the entire report, and when we select the Fiscal Quarter/Year, if a Top 10 Opportunities exists, it will return a record(s). If not, it returns 0. Need Top 10 for every quarter.
    The Rank function is used. How do I achieve this using this functionality?
    Thank you.

    Hi,
    Following information might be helpful in resolving the issue.
    General Syntax of Ranking :
    Rank( measure; (dimensions); [Top|Bottom])
    Here is the work flow with an example :- (use efashion universe )
    1) Create a webi report selecting objects quarter, year, sales revenue and create a cross tab
    2) While creating a cross tab, use the Object Year in columns and object Quarter for rows.
    3)Define a variable Var1 = Rank ([Sales Revenue] ; [Quarter]; [Year]) ForEach ([Year])
    4) Insert a blank column next to year in the cross tab.
    5) Drag and drop the variable Var1 in the new blank column inserted next to Object Year..
    You will now find that you have ranking for the years 2001, 2002, 2003 being reflected
    independently.
    Regards,
    Sarbhjeet Kaur

Maybe you are looking for