Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: Puzzles on SQL/Oracle
Charles Hooper wrote:
> DA Morgan wrote:
>> EscVector wrote: >>> On Dec 18, 1:52 pm, DA Morgan <damor..._at_psoug.org> wrote: >>>> Assume two identical tables, one named "A" the other "B" with >>>> identical column definitions. Assume that some rows in "A" are >>>> duplicated in "B" and some in "B" are duplicated in "A" but each >>>> table contains rows unique to that table. >>>> >>>> Write a single SELECT statement that will retrieve all of the rows >>>> from table "A" that are unique to "A", all the rows from "B" that >>>> are unique to "B" and label each retrieved row with the name of >>>> the table in which it was found. >>>> >>>> Have fun (and yes there are multiple solutions). >>>> -- >>>> Daniel A. Morgan >>>> University of Washington >>>> damor..._at_x.washington.edu >>>> (replace x with u to respond) >>>> Puget Sound Oracle Users Groupwww.psoug.org >>> CREATE TABLE A >>> ( COL1 CHAR(4), >>> COL2 NUMBER, >>> COL3 VARCHAR2(10)); >>> >>> begin >>> for x in 1..10 >>> loop >>> insert into a values ('ab'||x, x,'NONUNIQUE'); >>> end loop; >>> end; >>> / >>> >>> create table B as select * from a; >>> >>> >>> begin >>> for x in 1..10 >>> loop >>> insert into a values ('a'||x, x,'UNIQUE'); >>> end loop; >>> end; >>> / >>> >>> begin >>> for x in 1..10 >>> loop >>> insert into a values ('b'||x, x,'UNIQUE'); >>> end loop; >>> end; >>> / >>> >>> commit; >>> >>> (select a.col1 ,a.col2 ,a.col3, 'TABA' from a minus select >>> b.col1,b.col2,b.col3, 'TABA' from b ) >>> union >>> (select b.col1,b.col2,b.col3 ,'TABB' from b minus select >>> a.col1,a.col2,a.col3 ,'TABB' from a ); >> I'll just offer one, minor, critique. >> >> Given that the two SELECT statements must be obtaining different >> results, and no overlap is possible, UNION ALL would be more >> efficient. >> >> How about a second solution? Or a third? <g> >> -- >> Daniel A. Morgan >> University of Washington >> damorgan_at_x.washington.edu >> (replace x with u to respond) >> Puget Sound Oracle Users Group >> www.psoug.org
The intention was a single SQL statement ... I should have written it more clearly and for that I apologize.
The point though, much like with new math, is not just to get the right answer but to observe how someone approaches the problem.
-- Daniel A. Morgan University of Washington damorgan_at_x.washington.edu (replace x with u to respond) Puget Sound Oracle Users Group www.psoug.orgReceived on Wed Dec 20 2006 - 20:35:16 CST