MySQL If Statement and Increment -
i having issues mysql if statement creates group rank. here mysql statement:
select encode, enname, quscore, @scorerank := if(@currathlete = encode, @scorerank + 1, 1), @currathlete := encode ranking order encode, quscore desc
it gives following output
'1004277','ashe','1628','1','1004277' '1004277','ashe','1309','1','1004277' '1004277','ashe','1263','1','1004277' '1004277','ashe','648','1','1004277' '1004277','ashe','645','1','1004277' '1004277','ashe','1628','1','1004277' '1015934', 'sabina', '544', '1', '1015934' '1015934', 'sabina', '455', '1', '1015934' '1015934', 'sabina', '276', '1', '1015934' '1015934', 'sabina', '216', '1', '1015934'
what should doing incrementing each of '1' numbers 1 each row has same code, , starting 1 again when sees different code number (1004277, 1015934 in case)
any appreciated have followed number of examples online using above method seem hit same issue point.
try way in stored procedure:
drop procedure if exists incrementme; create procedure incrementme() begin declare oldennamevar varchar(10) default null; declare done int default false; declare encodevar varchar(10); declare ennamevar varchar(10); declare quscorevar varchar(10); declare scorerankvar varchar(10); declare currathalthletevar varchar(10); declare countcode int(29) default(1); declare counter int(20) default 0; declare get_cur cursor select `encode`,`enname`,`quscore`,`scorerank`,`currathalthlete` tbl_ranking; declare continue handler sqlstate '02000' set done=1; drop table if exists temp_temptable; create temporary table temp_temptable(encodevar varchar(50) null,ennamevar varchar(50) null,quscorevar varchar(50) null,scorerankvar varchar(50) null,currathalthletevar varchar(50) null,recordcount int(10) null); open get_cur; repeat set counter = counter + 1; fetch get_cur encodevar,ennamevar,quscorevar,scorerankvar,currathalthletevar; if (oldennamevar = ennamevar) set countcode = countcode +1; else if(counter=1) set countcode = 1; else set countcode = 0; end if; end if; if (oldennamevar != ennamevar) set countcode = 1; end if; if(oldennamevar=null) set countcode = 1; end if; insert temp_temptable (encodevar,ennamevar,quscorevar,scorerankvar,currathalthletevar,recordcount) values(encodevar,ennamevar,quscorevar,scorerankvar,currathalthletevar,countcode); set oldennamevar = ennamevar; until done end repeat; select * temp_temptable; drop temporary table if exists temp_temptable; close get_cur; end
call procedure this: call incrementme();
Comments
Post a Comment