mysql - How to run this query inside Stored Procedure when session variables are used -


i have found query calculate medians

@myvar:=0; @rownum:=0; select result.readdate,         avg(total_gallons) total_gallons    (select middle_rows.readdate,                 numerated_rows.rownum,                 numerated_rows.total_gallons            (select if(@myvar = readdate, @rownum := @rownum + 1, @rownum := 0) rownum,                        @myvar := readdate                                          readdate_alias,                        total_gallons                    _temp_total_gallons                  order  readdate,                            total_gallons) numerated_rows,                 (select readdate,                         count(*) / 2 median                    _temp_total_gallons                 group  readdate) middle_rows           numerated_rows.rownum between ( middle_rows.median - if(median = round(median), 1, 0) - 0.5 ) , ( middle_rows.median - if(median = round(median), 0, 0.5) )                , numerated_rows.readdate_alias = middle_rows.readdate) result group  readdate 

as see uses @myvar , @rownum session variables select if(@myvar = readdate, @rownum := @rownum + 1, @rownum := 0)

the problem can't run inside stored procedure because @myvar:=0 syntax unknown, , must reference/set inside-select runtime.

how rewrite above query used in stored procedure?

sample data test , query can found @ https://gist.github.com/948250
a second set of data test here https://gist.github.com/25b991396d0dd6968b7e

use

set @myvar := 0; 

inside sp assign value:

delimiter $$  create procedure prc_median() begin set @myvar:=0; set @rownum:=0; select result.readdate,        avg(total_gallons) total_gallons   (select middle_rows.readdate,                numerated_rows.rownum,                numerated_rows.total_gallons           (select if(@myvar = readdate, @rownum := @rownum + 1, @rownum := 0) rownum,                        @myvar := readdate                                          readdate_alias,                        total_gallons                   _temp_total_gallons                 order  readdate,                           total_gallons) numerated_rows,                (select readdate,                        count(*) / 2 median                   _temp_total_gallons                 group  readdate) middle_rows          numerated_rows.rownum between ( middle_rows.median - if(median = round(median), 1, 0) - 0.5 ) , ( middle_rows.median - if(median = round(median), 0, 0.5) )                , numerated_rows.readdate_alias = middle_rows.readdate) result group  readdate; end; $$ 

Comments

Popular posts from this blog

objective c - Change font of selected text in UITextView -

php - Accessing POST data in Facebook cavas app -

c# - Getting control value when switching a view as part of a multiview -