| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
|  |  | |||
Home -> Community -> Usenet -> c.d.o.misc -> Re: Union Query Improvement
On Feb 14, 9:59 am, "Ray Bannon" <raymond.w.ban..._at_boeing.com> wrote:
> Howdy, I've got a query which runs forever and am wondering if there's a
> more efficient way to write it.
>
> Select id, plan_name from table/view1 where plan_name = 'A' and rownum = 1
> union
> Select id, plan_name from table/view1 where plan_name = 'B' and rownum = 1
> union
> Select id, plan_name from table/view1 where plan_name = 'C' and rownum = 1
> union.....etc
>
> There are about 100 plan names, and I want one ID/owner for each plan_name.
Maybe I am not reading the question correctly, but this seems to be
very easy to accomplish.  You can speed it up a bit by changing UNION
to UNION ALL.  Or, you can write the SQL statement so that it may be
executed efficiently.  Example:
CREATE TABLE T3 (
  ID NUMBER(10),
  PLAN_NAME VARCHAR2(10));
Fill with a known sequence of numbers from 1 to 100:
INSERT INTO
  T3
SELECT
  ROWNUM,
  TO_CHAR(ROWNUM)
FROM
  DBA_OBJECTS
WHERE
  ROWNUM<=100;
Fill in a second set of 100 numbers with somewhat random values:
INSERT INTO
  T3
SELECT
  TRUNC(ROWNUM*DBMS_RANDOM.VALUE(0,5)),
  TO_CHAR(ROWNUM)
FROM
  DBA_OBJECTS
WHERE
  ROWNUM<=100;
Now, a simple GROUP BY:
SELECT
  MAX(ID) ID,
  PLAN_NAME
FROM
  T3
GROUP BY
  PLAN_NAME
ORDER BY
  PLAN_NAME;
        ID PLAN_NAME
========== ==========
	 2 1
	10 10
       385 100
	41 11
	12 12
	18 13
	21 14
	17 15
	58 16
	51 17
	23 18
	19 19
	 5 2
	83 20
	27 21
	22 22
	73 23
	71 24
	49 25
	49 26
       124 27
       113 28
	29 29
	 6 3
	30 30
	40 31
	32 32
	33 33
       149 34
       168 35
       177 36
	37 37
	39 38
	39 39
	16 4
       168 40
	57 41
       209 42
       104 43
       123 44
	57 45
	69 46
       116 47
	48 48
	56 49
	 7 5
	77 50
       172 51
       212 52
	53 53
	84 54
       232 55
       254 56
       275 57
       107 58
       181 59
	22 6
       151 60
       287 61
       172 62
       287 63
	98 64
       289 65
       238 66
	67 67
       145 68
       178 69
	10 7
       147 70
       204 71
       321 72
	95 73
       211 74
       147 75
       196 76
       163 77
	78 78
       276 79
	35 8
       250 80
       278 81
       244 82
       261 83
       102 84
       219 85
	86 86
       407 87
	88 88
       112 89
	 9 9
       259 90
       222 91
	92 92
       357 93
	94 94
	95 95
	96 96
       350 97
       268 98
       490 99
Charles Hooper
PC Support Specialist
K&M Machine-Fabricating, Inc.
Received on Wed Feb 14 2007 - 09:45:35 CST
|  |  |