Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add sequence number for each element in a group using a SQL query without temp tables

My question is quite similar to the one posted in this link - How to add sequence number for groups in a SQL query without temp tables

But, I need to enumerate the occurrence of group. The final output to be like this:

Record  Group     GroupSequence
-------|---------|--------------
1       Chickens  1
2       Chickens  2
3       Cows      1
4       Horses    1
5       Horses    2
6       Horses    3

Plus this has to be done in Oracle SQL. Any ideas?

like image 556
user1346265 Avatar asked Apr 20 '12 10:04

user1346265


1 Answers

Maybe something like this:

SELECT
    ROW_NUMBER() OVER(PARTITION BY [Group] ORDER BY Record) AS GroupSequence1,
    RANK() OVER(PARTITION BY [Group] ORDER BY Record) AS GroupSequence2,
    DENSE_RANK() OVER(PARTITION BY [Group] ORDER BY Record) AS GroupSequence3,
    Table1.Group,
    Table1.Record
FROM
    Table1

GroupSequence1, GroupSequence2 and GroupSequence3 will get you the output you want.

like image 57
Arion Avatar answered Nov 15 '22 04:11

Arion