Rank function in responses

Hello

I have to produce a graphic barcode with number of Projects(Y axis), Phase(X axis) project. For example, x axis should have labels such as Phase 1, Phase 2 etc, and in each phase, the number of projects should be the bar. The problem is the number of projects should be counted only in the phase where the "Recorded_date" is max.

In the database, I can use something similar to this
Select * from)
SELECT project, phase_id, recorded_date,
ROW_NUMBER() over (PARTITION BY project ORDER BY recorded_date desc) as rnk
of MAIN.project_detail) a
where rnk = 1;

How to implement this? Please let me know if there is another way. I don't want to make changes to the RPD, if I can accomplish this in answers.

Thank you for your time and your help.

So, in your case,.

Select * from)
SELECT project, phase_id, recorded_date,
ROW_NUMBER() over (PARTITION BY project ORDER BY recorded_date desc) as rnk
of MAIN.project_detail) a
where rnk = 1;

would be done by the statement "ROW_NUMBER() OVER (PARTITION BY project ORDER BY recorded_date desc) as rnk"
turns

rank (recorded_date by project)

in the function (fx) column.

Tags: Business Intelligence

Similar Questions

  • Is it possible to hide a conditional function in responsibility. Say it together a small number of users, I need the function display and for some users, it must be hidden.

    Is it possible to hide a conditional function in responsibility. Say it together a small number of users, I need the function display and for some users, it must be hidden.

    Hello

    The normal thing to do is to create a similar additional responsibility and using Exclusions to 'hide' the features you want.

    Then assign it to restricted users.

    Kind regards

    Bashar

  • The RANK function RESET option

    Hello

    Recently, I moved from Teradata to Oracle.I hit with the problem. I've implemented a logic using RESET option in OLAP functions. I'm not able to find the same type syntax of.

    Here is my entry.

    CREATE TABLE HODES

    (

    ACCNO INTEGER,

    VARCHAR2 (10) ACCNAME,.

    SAL DECIMAL (7.2).

    DATE OF EFFDT

    );

    INSERT INTO VALUES(1,'KVB',100,'01-JAN-15') OF THE HEADS OF DELEGATION;

    INSERT INTO VALUES(1,'KVB',100,'02-JAN-15') OF THE HEADS OF DELEGATION;

    INSERT INTO VALUES(1,'KVB',100,'03-JAN-15') OF THE HEADS OF DELEGATION;

    INSERT INTO VALUES(1,'KVB',200,'04-JAN-15') OF THE HEADS OF DELEGATION;

    INSERT INTO VALUES(1,'KVB',200,'05-JAN-15') OF THE HEADS OF DELEGATION;

    INSERT INTO VALUES(1,'KVB',100,'06-JAN-15') OF THE HEADS OF DELEGATION;

    INSERT INTO VALUES(1,'KVB',100,'07-JAN-15') OF THE HEADS OF DELEGATION;

    INSERT INTO VALUES(1,'KVB',200,'08-JAN-15') OF THE HEADS OF DELEGATION;

    COMMIT;

    Expected results:

    1, KVB, 100, 1 JANUARY 15

    1, KVB, 200, 4 JANUARY 15

    1, KVB, 100, 6 JANUARY 15

    1, KVB, 200, 8 JANUARY 15

    I pulled the RANK function, but it is the application on all the distinct values of the salary.

    Thank you

    KVB

    Hello

    You looking for something like:

    SELECT accno,

    accName,

    SAL,

    EFFDT

    FROM (select accno,

    accName,

    SAL,

    EFFDT,

    SAL - lag (SAL) on diff (order by effdt)

    Hodes t

    )

    WHERE the diff <> 0 GOLD diff is null;

  • Trying to update a field with the RANK function

    Hello world

    I'm trying to update a field using a PL/SQL function rank. When I'm doing it, I get a "+ ORA-01427: einreihig subquery returns more than one row +", and it's just that sometimes I have the same value more than once.

    All the world is facing this issue before? I mean try to update a field using the RANK function?

    Please don't hesiate to contact me, if any additional information is required.

    Best regards.

    UPDATE spd_f_mkt_DC_2
    SET RANKING_ID =)
    SELECT PLUS RANK()
    (
    KPI_MKT_ID PARTITION
    ORDER BY F_MKT_KPI DESC
    )
    OF SPD_F_MKT_DC_2
    )
    UPDATE  spd_f_mkt_DC_2 a
       SET RANKING_ID = (
                         SELECT  rnk
                           FROM  (
                                  SELECT  ROWID rid,
                                          RANK() OVER(PARTITION BY KPI_MKT_ID ORDER BY F_MKT_KPI DESC) rnk
                                    FROM  SPD_F_MKT_DC_2
                                 )
                           WHERE a.ROWID = rid
                        )
    /
    

    SY.

  • Rank function without filter in the report

    Hello

    I have a problem with the Rank() function. The problem is the following.

    I have a table with this train:

    The user | DATE | Cost

    User1. 02/12/2011 | 10.4
    User1. 13/02/2011 | 11.1
    User1. 13/02/2011 | 10.1
    User1. 13/02/2011 | 8.1
    User2. 02/12/2011 | 1, 4
    User2. 13/02/2011 | 12.1
    User2. 13/02/2011 | 22.1
    User2. 13/02/2011 | 8.1

    The RPD, I have a line of agregate under SUM (COST) and I need extract ranking you of this SUM (COST) by the user, user1 is 39.7 and the sum of user 2 is 43.7. If I show in the report of all users, the ranking is good rank = 1, rank = 2 by user1 and user2 but the problem is that I only want to show the User1, when I add a filter to the report user = 'user1', the rank value varies from 2 to 1. I need that the ranking value doesn´t change when I introduce a filter.

    Any idea on how to solve this problem?

    Thank you

    Hi Antonio,.

    On the rank in the answers column, modify the formula as shown below.

    Case where username = "user2" so Rank (sum (cost)) 0 otherwise end

    Then apply a filter on the column rank by rank > 0.

    I hope this helps you.

    Concerning
    AP

  • The Rank function used in Evaluate-aggr in RPD gives error

    Hello

    The RPD, in my fact table for a logical column of MDB, I, EVALUATE_AGGR ('RANK () OVER (ORDER BY DESC %1 %2 PARTITION)' AS INTEGER, 'main'.) "' proj_date ', 'hand '. ("' project ')

    but in the responses when I use this as a filter and say equal to 1, I get the following error "window functions are not allowed.

    Thanks for your time and your help.

    Hello
    your syntax seems to be not wrong of course. Try again with the sum function

    EVALUATE_AGGR ("DB_Aggregate_Function (%1)', {comma separated Expression})

    Windows functions: http://developer.postgresql.org/pgdocs/postgres/tutorial-window.html

    Thank you
    saichand.v

  • by selecting the max value of the rank function.

    Hi I have the following querry on the table use:

    Select user_id, e-mail,
    Rank() (PARTITION BY Email order by user_id) AS rank_l
    of users_tab;

    It gives me the result as follows:
    user_id E-mail rank_l
    1 1 [email protected]
    2 2 [email protected]
    3 [email protected] 1
    4 [email protected] 2
    5 [email protected] 1
    6 [email protected] 2
    7 [email protected] 3

    I need to select the user rank max id from the result set.
    in this case, the result should I get is:
    user_id E-mail rank_l
    2 2 [email protected]
    4 [email protected] 2
    7 [email protected] 3


    Help, please?

    Hello

    The "with" clause is only for the purppose test, use your own data. The solution is in the OLAP NTH_value function.

    select
    distinct
    nth_value(user_id,1) over (partition by email order by user_id desc) as id,
    nth_value(email,1) over (partition by email order by user_id  desc) as email
    from users_tab
    order by 1
    

    It works with your own data?

    Kind regards.

  • Create the function of responsibility which would pass parameters to 3rd party app

    Hello all,.

    My organization uses Oracle HRMS but no payroll. We try to convert them into electronic heels and have developed a 3rd party app, but we do not want users to have to use a separate password for our instance of EBS. Is it possible to create a function to attach to the responsibility of the employee self-service that will launch the 3 web part app and validate the information as user_id to spend?

    Thanks in advance!
    Kristopher

    Hello

    You can use pageContext.putSessionValueDirect () API to do this, as this API set parameters directly in the HTTP session as

    pageContext.putSessionValueDirect ("Parameter1", value1);
    pageContext.putSessionValueDirect ("Parameter2", value2);
    pageContext.setForceForwardURL ('Page URL',
    NULL,
    OAWebBeanConstants.KEEP_MENU_CONTEXT,
    NULL, null, true,
    OAWebBeanConstants.ADD_BREAD_CRUMB_YES,
    OAWebBeanConstants.IGNORE_MESSAGES);
    }

    It could be useful!

    Ajay

  • dense rank function

    I want to use the dense_rank function to get a rank.

    I created an example query:

    Select CUST_ID,
    Sum (AMOUNT_SOLD) AMOUNT_SOLD,
    DENSE_RANK() over (ORDER BY sum (AMOUNT_SOLD) CUST_ID PARTITION) grade
    SH. sales
    Group of cust_id

    But all the grade are equil. All have rank 1.

    What's wrong? TNX in advance...

    Hello

    user565199 wrote:
    I want to use the dense_rank function to get a rank.

    I created an example query:

    Select CUST_ID,
    Sum (AMOUNT_SOLD) AMOUNT_SOLD,
    DENSE_RANK() over (ORDER BY sum (AMOUNT_SOLD) CUST_ID PARTITION) grade
    SH. sales
    Group of cust_id

    But all the grade are equil. All have rank 1.

    What's wrong? TNX in advance...

    I don't think you want to PARTITION in this case.
    Try this:

    select    CUST_ID,
           sum (AMOUNT_SOLD)                          AMOUNT_SOLD ,
             dense_rank () OVER (ORDER BY sum(AMOUNT_SOLD))     rank     -- NOTE no "PARTITION BY" clause
    from       SH.SALES
    group by  cust_id
    ;
    

    "PARTITION BY cust_id" means generate a separate set of numbers (1, 2, 3,...) for each value of cust_id. Each cust_id will have a 1; If there are two lines with the same cust_id, the 2nd will be numbered 1 or 2 (depeneding on the value of the ORDER BY expression) and so on. Given that you group BY cust_id, there will never be a 2nd row with the same cust_id and so the number 2 will be bever be assigned.

    Published by: Frank Kulash, 28 April 2010 07:46

  • Rank function

    I need to display 10 from the Quntity classified customer. How to achieve this level of report with the addition of a new column for Rank.Thank you!

    Hi user,

    If you already have 'ordered Quntity"column in the query, click the icon to filter the column and in the menu drop down select"Is at the top"and type 10, and click ok. Once the filter is added, the report will show top 10 customers.

    Rgds,
    DpKa

  • Ranking in the responses

    Hello

    Report1 has project name, date, project_stages, project_start_date_rank (grade (date by project name). Filter has project_start_date_rank = 1.

    Report2 has the same values with a field additional project name, date, project_stages, project_start_date_rank (grade (date of project_name), project_cost. filter has project_start_date_rank = 1 and project name is invited.)

    I have project name Report1 to the Report2. In Report2 I project name that you are prompted, the problem is, it is first of all it filtering in the past project name and rank then it how to classify everything first and then filter it?

    Thanks for your time and your help.

    Get the classification made the RPD itself by the use of this term.

    Cast (Evaluate ('RANK () OVER (PARTITION BY 1%, 2%))) ", logical_table. (ROWID) AS FLOAT)

  • Help on the Dense Rank function

    Hi all

    Here is the sql code, I'm trying to run and service Rank Dense gives same result for all lines, 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 "broke" to the top of your result set (from the online display) by the AMT (PARTITION BY the AMT)
    and each part, you sort it (a line of each partition, not a sort heap) (ORDER BY DESC AMT)
    Then, you assign a classification based on the sort... action that gives 1 (DENSE_RANK)

    You are 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 
    
  • Function Rank and duplicate records

    Hello

    I have the following table:

    CREATE TABLE A_TEST (AN INTEGER, B INTEGER, INTEGER C D INTEGER, CHAR (11) PAVILION);

    INSERT INTO A_TEST (A, B, C, D) VALUES (1,2,3,4).
    INSERT INTO A_TEST (A, B, C, D) VALUES (2,4,5,8);
    INSERT INTO A_TEST (A, B, C, D) VALUES (1,2,3,4).
    INSERT INTO A_TEST (A, B, C, D) VALUES (2,4,5,8);
    INSERT INTO A_TEST (A, B, C, D) VALUES (7,2,3,4);
    INSERT INTO A_TEST (A, B, C, D) VALUES (9,2,3,4);
    INSERT INTO A_TEST (A, B, C, D) VALUES (7,2,3,4);
    INSERT INTO A_TEST (A, B, C, D) VALUES (1,2,3,4).
    INSERT INTO A_TEST (A, B, C, D) VALUES (5,4,5,8);
    INSERT INTO A_TEST (A, B, C, D) VALUES (2,2,3,9);
    INSERT INTO A_TEST (A, B, C, D) VALUES (2,4,5,8);
    INSERT INTO A_TEST (A, B, C, D) VALUES (6,2,3,4);
    INSERT INTO A_TEST (A, B, C, D) VALUES (1,3,3,4);
    INSERT INTO A_TEST (A, B, C, D) VALUES (8,2,8,4);


    "I want to perform an update on the FLAG column by setting"D"if it's a record.1, 2, 3, 4 in doubles);


    I would use the rank function.

    Desired update:

    A B C D FLAG
    1 2 3 4
    2, 4, 5, 8
    1     2     3     4     D
    2     4     5     8     D
    7 2 3 4
    9 2 3 4
    7     2     3     4     D
    1     2     3     4     D
    5 4 5 8
    2 2 3 9
    2, 4, 5, 8
    6 2 3 4
    1 3 3 4
    8 2 8 4


    Thank you

    I guess that your output is not correct for '2 4 5 8', it shows two as valid records and only one record as duplicate. If you are right, you must explain the logic.

    something like that...

    update a_test b
       set b.flag = 'D'
     where b.rowid in (select row_id
                         from (select a.rowid row_id,
                                      a,
                                      b,
                                      c,
                                      d,
                                      rank() over(partition by a, b, c, d order by rownum) rn
                                 from a_test a)
                        where rn > 1)
    
  • Retruning lines which have the same return value from the function RANK

    Hi, I want to achieve is to use a DENSE RANK function to identify the same value of the data, if the rank values are same then extra. Here is the code
    WITH CTE AS
    (
    SELECT SalesPersonID,
    SalesQuota,
    DENSE_RANK() OVER (ORDER BY SalesQuota DESC) as DENSE_RANK
    FROM Sales.SalesPersonQuotaHistory
    WHERE SalesQuota BETWEEN 266000.00 AND 319000.00
    )
    This retrun
    SalesPersonID SalesQuota DENSE_RANK
    280 319000.00 1
    287 304000.00 2
    280 301000.00 3
    282 288000.00 4
    283 284000.00 5
    287 281000.00 6
    278 280000.00 7
    283 280000.00 7
    283 267000.00 8
    278 266000.00 9
    How I choose the rank value that are of the same value?

    The result should be
    278 280000.00 7
    283 280000.00 7
    with cte as
    (
     select salespersonid,
         salesquota,
         dense_rank() over (order by salesquota desc) as dr
       from sales.salespersonquotahistory
      where salesquota between 266000.00 and 319000.00
    )
    select *
      from (
         select cte.*, count(*) over(partition by dr) ct
           from cte
           )
     where ct > 1
    
  • Function Rank()

    Hello

    I created the slot type

    CREATE OR REPLACE TYPE SCORE_TYP IS OBJECT
    (
    ID NUMBER,
    NUMBER of points
    );

    CREATE OR REPLACE TYPE TBL_SCORE_TYP AS TABLE SCORE_TYP;

    and in my stored procedure I created below

    Note TBL_SCORE_TYP: = TBL_SCORE_TYP();

    to store the partition sorted by id in descending order.

    -Sort the scoreboard in descending order.
    SELECT SCORE_TYP(id,score) BULK COLLECT INTO sorted_score
    Of
    TABLE (CAST (score AS TBL_SCORE_TYP))
    ORDER BY score DESC;

    It all works fine for me.

    Now, I need to classify the ID according to their score using the RANK() function.

    I tried the following


    SELECT SCORE_TYP(id,score) BULK COLLECT INTO sorted_score,
    Rank() over (ORDER BYscore)
    Of
    TABLE (CAST (score AS TBL_SCORE_TYP))
    ORDER BY score DESC;

    but I get the error below:

    PL/SQL: ORA-30483: window functions are not allowed here

    Please help me solve this. Cant, we use the RANK function using PL/SQL selection tables?

    Thank you.

    user10450904 wrote:
    SELECT SCORE_TYP(id,score) BULK COLLECT INTO sorted_score,
    Rank() over (ORDER BYscore)
    Of
    TABLE (CAST (score AS TBL_SCORE_TYP))
    ORDER BY score DESC;

    You now choose two values, but only one IN the variable. In addition, the INTO should come after all the selected values.
    Something like:

    SELECT SCORE_TYP(id,score), RANK() OVER (ORDER BY score)
    BULK COLLECT INTO sorted_score ,other_var
    ...
    

    Nicolas.

Maybe you are looking for