Solved

Fetching random row from each group in oracle

Posted on 2013-06-06
3
1,164 Views
Last Modified: 2013-06-07
I have a table which has row, title, code and store as columns.

I have to group by code and store.

Assume table contains these rows.

Row        Title       Code        Store
      
1       title1      abcd        store1
2       title2      abcd        store1
3       title3      abcd        store1
4       title1      efgh        store2
5       titlex      efgh        store2

select code,store,count(*) from table
group by code,store order by count(*) desc;

It will give :

abcd        store1        3
efgh        store2    2

Now how can we get one random row from each group. For example it should give

Row       Title       Code        Store

2       title2       abcd            store1
5       titlex       efgh            store2

any one of the record from each group.

Regards,
Sasidhar.
0
Comment
Question by:sasidhar1229
  • 2
3 Comments
 
LVL 76

Accepted Solution

by:
slightwv (䄆 Netminder) earned 450 total points
ID: 39226080
Try this:


select title, code, store from (
select title, code, store, row_number() over(partition by code, store order by dbms_random.value) myrn
from table
)
where myrn=1
/
0
 
LVL 73

Assisted Solution

by:sdstuber
sdstuber earned 50 total points
ID: 39226137
http://www.experts-exchange.com/Database/Oracle/A_9391-How-to-Create-User-Defined-Aggregates-in-Oracle.html


SELECT id, title, code, store
  FROM (SELECT t.*, random_value_agg(id) OVER (PARTITION BY store) rand_id
          FROM yourtable t)
 WHERE id = rand_id
0
 
LVL 73

Expert Comment

by:sdstuber
ID: 39226446
Note, the random_value_agg method might be slightly more intuitive,
but it's not as efficient as the method in the first post.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
levels for reporting 5 65
Oracle Pivot 2 43
Last record chosen in Oracle Query 3 54
EXECUTE IMMEDIATE 5 53
I remember the day when someone asked me to create a user for an application developement. The user should be able to create views and materialized views and, so, I used the following syntax: (CODE) This way, I guessed, I would ensure that use…
This post first appeared at Oracleinaction  (http://oracleinaction.com/undo-and-redo-in-oracle/)by Anju Garg (Myself). I  will demonstrate that undo for DML’s is stored both in undo tablespace and online redo logs. Then, we will analyze the reaso…
This videos aims to give the viewer a basic demonstration of how a user can query current session information by using the SYS_CONTEXT function
This video shows how to recover a database from a user managed backup

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now