Solved

query to produce 10 rows, half of col= A and other half of col=B

Posted on 2011-03-24
13
546 Views
Last Modified: 2013-12-07
I have a table my_table
I want a query which selects 5 rows where col='A' and 5 rows where col='B'
so i should have a total of 10 rows.

but the following query does not work as intended.

select col
from my_table
where col= 'A'
and rownum<=5
union
select col
from my_table
where col= 'B'
and rownum<=5

0
Comment
Question by:gram77
  • 4
  • 4
  • 3
13 Comments
 
LVL 1

Expert Comment

by:data_n_poker
Comment Utility
Try using union all instead of just union
0
 

Author Comment

by:gram77
Comment Utility
union all and union work same.
also i only see col=A rows, col=B rows do not append
0
 
LVL 1

Expert Comment

by:data_n_poker
Comment Utility
Try this:

Select *
From 
(select col
from my_table
where col= 'A'
and rownum<=5) colA,
(select col
from my_table
where col= 'B'
and rownum<=5) colB
ORDER BY Col

Open in new window

0
 
LVL 73

Expert Comment

by:sdstuber
Comment Utility
you can also try this



SELECT col
  FROM (SELECT col, ROW_NUMBER() OVER (PARTITION BY col ORDER BY 1) rn
          FROM my_table
         WHERE col IN ('A', 'B'))
 WHERE rn <= 5
0
 

Author Comment

by:gram77
Comment Utility
above query returns no rows.
0
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 
LVL 73

Expert Comment

by:sdstuber
Comment Utility
are you sure you're explaining your setup correctly?

the union all suggestion and my row_number suggestion both work when I tested them.

if they don't work for you, please post structure and sample data that illustrates the problem
0
 
LVL 1

Accepted Solution

by:
data_n_poker earned 500 total points
Comment Utility
I have create a table in a oracle 11 database.  The table has one column, with A and B entries, using this query:
select col
from my_table
where col= 'A'
and rownum <=5
union all
select col
from my_table
where col='B'
and rownum <=5

Open in new window

I got these results
Col
A
A
A
A
A
B
B
B
B
B

Open in new window

0
 
LVL 73

Expert Comment

by:sdstuber
Comment Utility
gram77,

please explain your choice.
the accepted answer does not produce the requested results of 10 rows.

It will produce a cartesian product based on the results of two subqueries.
Assuming each subquery returns 5 rows, the result will be 25 rows for the entire query
Also, it won't return a single column it will return 2 columns
and lastly,  the order by clause in that post is syntactically incorrect because "col" is ambiguous
0
 
LVL 1

Expert Comment

by:data_n_poker
Comment Utility
I have the same question, as i posted that before i tried it, and it is very much incorrect(syntactically and based on what is asked for in the question).  Thought the union all and sdstuber's query provided the exact results that were requested.
0
 

Author Comment

by:gram77
Comment Utility
that is an error on my part.
by mistake i accepted the wrong solution,
the correct one is
ID: 35208415
0
 
LVL 73

Expert Comment

by:sdstuber
Comment Utility
sure,  UNION ALL was the very first post and from the same author
http:#a35208415 repeats it but with an example.
0

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Join & Write a Comment

Suggested Solutions

Why doesn't the Oracle optimizer use my index? Querying too much data Most Oracle developers know that an index is useful when you can use it to restrict your result set to a small number of the total rows in a table. So, the obvious side…
Have you ever had to make fundamental changes to a table in Oracle, but haven't been able to get any downtime?  I'm talking things like: * Dropping columns * Shrinking allocated space * Removing chained blocks and restoring the PCTFREE * Re-or…
This video shows, step by step, how to configure Oracle Heterogeneous Services via the Generic Gateway Agent in order to make a connection from an Oracle session and access a remote SQL Server database table.
This video shows how to Export data from an Oracle database using the Datapump Export Utility.  The corresponding Datapump Import utility is also discussed and demonstrated.

772 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

10 Experts available now in Live!

Get 1:1 Help Now