乐透彩票我怎么能计算每一行的获胜次数?

时间:2012-11-21 22:29:47

标签: oracle

我有表zadanie1与plyyers和每个6个randoms编号。

create table zadanie1(
  nazwisko varchar2(30),
  liczba1 number,
  liczba2 number,
  liczba3 number,
  liczba4 number,
  liczba5 number,
  liczba6 number,
  constraint stud2_nazw primary key (nazwisko)
  );


   Create or replace procedure "TOTOLOTEK3" is liczba number;
   cursor pierwszy_kursor is select num from (select num from (select rownum num from dual              connect by level <= 49 order by dbms_random.value) where rownum <= 6);
    begin
    for iter in 1..5
    loop
    open pierwszy_kursor;
    for iterator in 1..6
    loop
    fetch pierwszy_kursor into liczba;
    if iterator=1
    then update zadanie2 set liczba1=liczba where Id = iter;
    end if;
    if iterator=2
    then update zadanie2 set liczba2=liczba where Id = iter;
    end if;
    if iterator=3
    then update zadanie2 set liczba3=liczba where Id = iter;
    end if;
    if iterator=4
    then update zadanie2 set liczba4=liczba where Id = iter;
    end if;
    if iterator=5
    then update zadanie2 set liczba5=liczba where Id = iter;
    end if;
    if iterator=6
    then update zadanie2 set liczba6=liczba where Id = iter;
    end if;
    dbms_output.put_line( liczba||' liczba ');
    exit when pierwszy_kursor%notfound;
     end loop;
    close pierwszy_kursor;
    end loop;
    end;

我在考虑分析功能,但在这种情况下我不知道如何使用。

当我有一排优惠券时,我需要为每位玩家计算获胜次数吗? 帮助

1 个答案:

答案 0 :(得分:0)

我喜欢你的随机生成器查询,非常聪明!

您需要将行转置为列。这可以通过PIVOTMIN(DECODE)完成。将它放在一行后,您不需要游标,可以将行直接插入目标表中:

create or replace procedure totolotek3 as    
begin
  for iter in 1..5 loop
    insert into zadanie2(liczba1,liczba2,liczba3,liczba4,liczba5,liczba6)
    select min(decode(rownum,1,num)) as num1,
           min(decode(rownum,2,num)) as num2,
           min(decode(rownum,3,num)) as num3,
           min(decode(rownum,4,num)) as num4,
           min(decode(rownum,5,num)) as num5,
           min(decode(rownum,6,num)) as num6
      from (select rownum num 
              from dual connect by level <= 49 
             order by dbms_random.value) 
     where rownum <= 6; 
  end loop;
end totolotek3;
/

如果表zadanie2也有主键,你当然也需要填写该列。