Unix Technical Forum

SEO

vBulletin Search Engine Optimization


Go Back   Unix Technical Forum > Database Server Software > Sybase

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-24-2008, 06:10 PM
Jorge Reyes
 
Posts: n/a
Default A BETTER QUERY

Hi me again, well now i think that i am really looser jejee, how can i
do this whitout pass the table 8 fucking times!!!, i'm sorry but i am
really angry because at this moment i cannot visualize the solution,
help me please:

SELECT
@MAX_HEPE_OUT1 = ISNULL(MAX(Hepe),0),
@MIN_HEPE_OUT1 = ISNULL(MIN(Hepe),0),
@AVG_HEPE_OUT1 = ISNULL(AVG(Hepe),0)
FROM #TMP2_UB_HEPE
WHERE
PMM_DATETIME BETWEEN @dINIT_DATE AND @dEND_DATE_AUX AND
OutputSource = '1'

SELECT
@MAX_HEPE_OUT2 = ISNULL(MAX(Hepe),0),
@MIN_HEPE_OUT2 = ISNULL(MIN(Hepe),0),
@AVG_HEPE_OUT2 = ISNULL(AVG(Hepe),0)
FROM #TMP2_UB_HEPE
WHERE
PMM_DATETIME BETWEEN @dINIT_DATE AND @dEND_DATE_AUX AND
OutputSource = '2'

SELECT
@MAX_HEPE_OUT3 = ISNULL(MAX(Hepe),0),
@MIN_HEPE_OUT3 = ISNULL(MIN(Hepe),0),
@AVG_HEPE_OUT3 = ISNULL(AVG(Hepe),0)
FROM #TMP2_UB_HEPE
WHERE
PMM_DATETIME BETWEEN @dINIT_DATE AND @dEND_DATE_AUX AND
OutputSource = '3'

SELECT
@MAX_HEPE_OUT4 = ISNULL(MAX(Hepe),0),
@MIN_HEPE_OUT4 = ISNULL(MIN(Hepe),0),
@AVG_HEPE_OUT4 = ISNULL(AVG(Hepe),0)
FROM #TMP2_UB_HEPE
WHERE
PMM_DATETIME BETWEEN @dINIT_DATE AND @dEND_DATE_AUX AND
OutputSource = '4'

SELECT
@MAX_HEPE_OUT5 = ISNULL(MAX(Hepe),0),
@MIN_HEPE_OUT5 = ISNULL(MIN(Hepe),0),
@AVG_HEPE_OUT5 = ISNULL(AVG(Hepe),0)
FROM #TMP2_UB_HEPE
WHERE
PMM_DATETIME BETWEEN @dINIT_DATE AND @dEND_DATE_AUX AND
OutputSource = '5'

SELECT
@MAX_HEPE_OUT6 = ISNULL(MAX(Hepe),0),
@MIN_HEPE_OUT6 = ISNULL(MIN(Hepe),0),
@AVG_HEPE_OUT6 = ISNULL(AVG(Hepe),0)
FROM #TMP2_UB_HEPE
WHERE
PMM_DATETIME BETWEEN @dINIT_DATE AND @dEND_DATE_AUX AND
OutputSource = '6'

SELECT
@MAX_HEPE_OUT7 = ISNULL(MAX(Hepe),0),
@MIN_HEPE_OUT7 = ISNULL(MIN(Hepe),0),
@AVG_HEPE_OUT7 = ISNULL(AVG(Hepe),0)
FROM #TMP2_UB_HEPE
WHERE
PMM_DATETIME BETWEEN @dINIT_DATE AND @dEND_DATE_AUX AND
OutputSource = '7'

SELECT
@MAX_HEPE_OUT8 = ISNULL(MAX(Hepe),0),
@MIN_HEPE_OUT8 = ISNULL(MIN(Hepe),0),
@AVG_HEPE_OUT8 = ISNULL(AVG(Hepe),0)
FROM #TMP2_UB_HEPE
WHERE
PMM_DATETIME BETWEEN @dINIT_DATE AND @dEND_DATE_AUX AND
OutputSource = '8'
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-24-2008, 06:10 PM
--CELKO--
 
Posts: n/a
Default Re: A BETTER QUERY

Quit thinking "one row at time" and start thinking about whole sets.
Stop using the proprietary ISNULL() and use the Standard SQL
COALESCE(). You probably should not be using a # table, too.

SELECT outputsource, COALESCE(MAX (hepe), 0) AS max_hepe_out3,
COALESCE(MIN(hepe), 0) AS min_hepe_out3,
COALESCE(AVG(hepe), 0) AS avg_hepe_out3
FROM #tmp2_ub_hepe
WHERE pmm_datetime BETWEEN @dinit_date AND @dend_date_aux
AND outputsource IN ('1', '2', '3', '4', '5', '6', '7', '8')
GROUP BY outputsource;
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 04-24-2008, 06:10 PM
bret@sybase.com
 
Posts: n/a
Default Re: A BETTER QUERY

Assuming that assigning the values to local variables is important,
something like the following might be used:

SELECT
@MAX_HEPE_OUT1 = COALESCE( MAX( CASE when Outputsource = 1 then Hepe
else <minvalue> end ),0),
@MIN_HEPE_OUT1 = COALESCE( MIN( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0),
@AVG_HEPE_OUT1 = COALESCE( AVG( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0)
@MAX_HEPE_OUT2 = COALESCE( MAX( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0),
@MIN_HEPE_OUT2 = COALESCE( MIN( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0),
@AVG_HEPE_OUT2 = COALESCE( AVG( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0)
@MAX_HEPE_OUT3 = COALESCE( MAX( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0),
@MIN_HEPE_OUT3 = COALESCE( MIN( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0),
@AVG_HEPE_OUT3 = COALESCE( AVG( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0)
@MAX_HEPE_OUT4 = COALESCE( MAX( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0),
@MIN_HEPE_OUT4 = COALESCE( MIN( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0),
@AVG_HEPE_OUT4 = COALESCE( AVG( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0)
@MAX_HEPE_OUT5 = COALESCE( MAX( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0),
@MIN_HEPE_OUT5 = COALESCE( MIN( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0),
@AVG_HEPE_OUT5 = COALESCE( AVG( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0)
@MAX_HEPE_OUT6 = COALESCE( MAX(CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0),
@MIN_HEPE_OUT6 = COALESCE( MIN( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0),
@AVG_HEPE_OUT6 = COALESCE( AVG( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0)
@MAX_HEPE_OUT7 = COALESCE( MAX( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0),
@MIN_HEPE_OUT7 = COALESCE( MIN( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0),
@AVG_HEPE_OUT7 = COALESCE( AVG( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0)
@MAX_HEPE_OUT8 = COALESCE( MAX( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0),
@MIN_HEPE_OUT8 = COALESCE( MIN( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0),
@AVG_HEPE_OUT8 = COALESCE( AVG( CASE when Outputsource = 1 then
Hepeelse <minvalue> end ),0)
FROM #TMP2_UB_HEPE
WHERE
PMM_DATETIME BETWEEN @dINIT_DATE AND @dEND_DATE_AUX
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #4 (permalink)  
Old 04-24-2008, 06:10 PM
Jorge Reyes
 
Posts: n/a
Default Re: A BETTER QUERY

On 23 abr, 13:46, b...@sybase.com wrote:
> Assuming that assigning the values to local variables is important,
> something like the following might be used:
>
> SELECT
> @MAX_HEPE_OUT1 = COALESCE( *MAX( CASE when Outputsource = 1 then Hepe
> else <minvalue> end ),0),
> @MIN_HEPE_OUT1 = *COALESCE( *MIN( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0),
> @AVG_HEPE_OUT1 = COALESCE( *AVG( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0)
> @MAX_HEPE_OUT2 = COALESCE( *MAX( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0),
> @MIN_HEPE_OUT2 = COALESCE( *MIN( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0),
> @AVG_HEPE_OUT2 = COALESCE( *AVG( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0)
> @MAX_HEPE_OUT3 = COALESCE( *MAX( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0),
> @MIN_HEPE_OUT3 = COALESCE( *MIN( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0),
> @AVG_HEPE_OUT3 = COALESCE( *AVG( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0)
> @MAX_HEPE_OUT4 = COALESCE( *MAX( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0),
> @MIN_HEPE_OUT4 = COALESCE( *MIN( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0),
> @AVG_HEPE_OUT4 = COALESCE( *AVG( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0)
> @MAX_HEPE_OUT5 = COALESCE( *MAX( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0),
> @MIN_HEPE_OUT5 = COALESCE( *MIN( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0),
> @AVG_HEPE_OUT5 = COALESCE( *AVG( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0)
> @MAX_HEPE_OUT6 = COALESCE( *MAX(CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0),
> @MIN_HEPE_OUT6 = COALESCE( *MIN( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0),
> @AVG_HEPE_OUT6 = COALESCE( *AVG( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0)
> @MAX_HEPE_OUT7 = COALESCE( *MAX( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0),
> @MIN_HEPE_OUT7 = COALESCE( *MIN( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0),
> @AVG_HEPE_OUT7 = COALESCE( *AVG( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0)
> @MAX_HEPE_OUT8 = COALESCE( *MAX( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0),
> @MIN_HEPE_OUT8 = COALESCE( *MIN( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0),
> @AVG_HEPE_OUT8 = COALESCE( *AVG( CASE when Outputsource = 1 then
> Hepeelse <minvalue> end ),0)
> FROM #TMP2_UB_HEPE
> WHERE
> PMM_DATETIME BETWEEN @dINIT_DATE AND @dEND_DATE_AUX


Assigning the values to local variables is VERY important, but i dont
understand this, you mean that i have put a MIN(CASE when X else Y
end),0)
where
X = Outputsource = 1,2,3......8
Y = ?????

Sorry but please give me more details, thanks!!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #5 (permalink)  
Old 04-25-2008, 12:42 AM
bret@sybase.com
 
Posts: n/a
Default Re: A BETTER QUERY

On Apr 23, 4:28 pm, Jorge Reyes <jorg_re...@hotmail.com> wrote:
> On 23 abr, 13:46, b...@sybase.com wrote:
>
>
>
> > Assuming that assigning the values to local variables is important,
> > something like the following might be used:

>
> > SELECT
> > @MAX_HEPE_OUT1 = COALESCE( MAX( CASE when Outputsource = 1 then Hepe
> > else <minvalue> end ),0),
> > @MIN_HEPE_OUT1 = COALESCE( MIN( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0),
> > @AVG_HEPE_OUT1 = COALESCE( AVG( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0)
> > @MAX_HEPE_OUT2 = COALESCE( MAX( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0),
> > @MIN_HEPE_OUT2 = COALESCE( MIN( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0),
> > @AVG_HEPE_OUT2 = COALESCE( AVG( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0)
> > @MAX_HEPE_OUT3 = COALESCE( MAX( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0),
> > @MIN_HEPE_OUT3 = COALESCE( MIN( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0),
> > @AVG_HEPE_OUT3 = COALESCE( AVG( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0)
> > @MAX_HEPE_OUT4 = COALESCE( MAX( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0),
> > @MIN_HEPE_OUT4 = COALESCE( MIN( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0),
> > @AVG_HEPE_OUT4 = COALESCE( AVG( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0)
> > @MAX_HEPE_OUT5 = COALESCE( MAX( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0),
> > @MIN_HEPE_OUT5 = COALESCE( MIN( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0),
> > @AVG_HEPE_OUT5 = COALESCE( AVG( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0)
> > @MAX_HEPE_OUT6 = COALESCE( MAX(CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0),
> > @MIN_HEPE_OUT6 = COALESCE( MIN( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0),
> > @AVG_HEPE_OUT6 = COALESCE( AVG( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0)
> > @MAX_HEPE_OUT7 = COALESCE( MAX( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0),
> > @MIN_HEPE_OUT7 = COALESCE( MIN( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0),
> > @AVG_HEPE_OUT7 = COALESCE( AVG( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0)
> > @MAX_HEPE_OUT8 = COALESCE( MAX( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0),
> > @MIN_HEPE_OUT8 = COALESCE( MIN( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0),
> > @AVG_HEPE_OUT8 = COALESCE( AVG( CASE when Outputsource = 1 then
> > Hepeelse <minvalue> end ),0)
> > FROM #TMP2_UB_HEPE
> > WHERE
> > PMM_DATETIME BETWEEN @dINIT_DATE AND @dEND_DATE_AUX

>
> Assigning the values to local variables is VERY important, but i dont
> understand this, you mean that i have put a MIN(CASE when X else Y
> end),0)
> where
> X = Outputsource = 1,2,3......8
> Y = ?????
>
> Sorry but please give me more details, thanks!!


Sorry, I did get in a bit too much of a hurry. The query should have
had incrementing Outputsource values for each set of 3 variables, and
the else values should be NULLs

SELECT
@MAX_HEPE_OUT1 = COALESCE( MAX( CASE when Outputsource = 1 then Hepe
else NULL end ),0),
@MIN_HEPE_OUT1 = COALESCE( MIN( CASE when Outputsource = 1 then
Hepeelse NULL end ),0),
@AVG_HEPE_OUT1 = COALESCE( AVG( CASE when Outputsource = 1 then
Hepeelse NULL end ),0)
@MAX_HEPE_OUT2 = COALESCE( MAX( CASE when Outputsource = 2 then
Hepeelse NULL end ),0),
@MIN_HEPE_OUT2 = COALESCE( MIN( CASE when Outputsource = 2 then
Hepeelse NULL end ),0),
@AVG_HEPE_OUT2 = COALESCE( AVG( CASE when Outputsource = 2 then
Hepeelse NULL end ),0)
@MAX_HEPE_OUT3 = COALESCE( MAX( CASE when Outputsource = 3 then
Hepeelse NULL end ),0),
@MIN_HEPE_OUT3 = COALESCE( MIN( CASE when Outputsource = 3 then
Hepeelse NULL end ),0),
@AVG_HEPE_OUT3 = COALESCE( AVG( CASE when Outputsource = 3 then
Hepeelse NULL end ),0)
@MAX_HEPE_OUT4 = COALESCE( MAX( CASE when Outputsource = 4 then
Hepeelse NULL end ),0),
@MIN_HEPE_OUT4 = COALESCE( MIN( CASE when Outputsource = 4 then
Hepeelse NULL end ),0),
@AVG_HEPE_OUT4 = COALESCE( AVG( CASE when Outputsource = 4 then
Hepeelse NULL end ),0)
@MAX_HEPE_OUT5 = COALESCE( MAX( CASE when Outputsource = 5 then
Hepeelse NULL end ),0),
@MIN_HEPE_OUT5 = COALESCE( MIN( CASE when Outputsource = 5 then
Hepeelse NULL end ),0),
@AVG_HEPE_OUT5 = COALESCE( AVG( CASE when Outputsource = 5 then
Hepeelse NULL end ),0)
@MAX_HEPE_OUT6 = COALESCE( MAX(CASE when Outputsource = 6 then
Hepeelse NULL end ),0),
@MIN_HEPE_OUT6 = COALESCE( MIN( CASE when Outputsource = 6 then
Hepeelse NULL end ),0),
@AVG_HEPE_OUT6 = COALESCE( AVG( CASE when Outputsource = 6 then
Hepeelse NULL end ),0)
@MAX_HEPE_OUT7 = COALESCE( MAX( CASE when Outputsource = 7 then
Hepeelse NULL end ),0),
@MIN_HEPE_OUT7 = COALESCE( MIN( CASE when Outputsource = 7 then
Hepeelse NULL end ),0),
@AVG_HEPE_OUT7 = COALESCE( AVG( CASE when Outputsource = 7 then
Hepeelse NULL end ),0)
@MAX_HEPE_OUT8 = COALESCE( MAX( CASE when Outputsource = 8 then
Hepeelse NULL end ),0),
@MIN_HEPE_OUT8 = COALESCE( MIN( CASE when Outputsource = 8 then
Hepeelse NULL end ),0),
@AVG_HEPE_OUT8 = COALESCE( AVG( CASE when Outputsource = 8 then
Hepeelse NULL end ),0)
FROM #TMP2_UB_HEPE
WHERE
PMM_DATETIME BETWEEN @dINIT_DATE AND @dEND_DATE_AUX
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 05:26 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145