Mega Code Archive

 
Categories / Oracle PLSQL / Analytical Functions
 

Use rank and dense_rank in subquery

SQL> CREATE TABLE sales(   2    product_id            NUMBER(6),   3    cid           NUMBER,   4    time_id               DATE,   5    sold         NUMBER(3),   6    amount                NUMBER(10,2),   7    cost                  NUMBER(10,2)   8  ); Table created. SQL> SQL> select * from   2    (select product_id,   3           sum(sold),   4           rank () over (order by sum(sold) desc) as rank,   5           dense_rank () over (order by sum(sold) desc) as dense_rank   6    from sales   7    where to_char(time_id, 'yyyy-mm') = '2001-06'   8    group by product_id)   9  where rank < 11; no rows selected SQL> SQL> SQL> drop table sales; Table dropped.