4 Replies Latest reply: Mar 6, 2012 3:19 PM by Rafael Mendes da Silva RSS

    Duvida na montagem de script

    Rafael Mendes da Silva

      Boa Tarde galera, hoje é meu primeiro Post, estou com dificuldade no seguinte scrip:

       

       

       

      CampeoesAux:

      Directory;

      LOAD Ano, //anos de 1950 até 2011

           Piloto  ,//Nome do piloto campeao

           Equipe,//Equipe que os pilotos correu no ano

           if((sum(Pontos)), Sum(Pontos))          as Campeoes //Realizar calculo para armazenar somente o piloto com a maior quantodade de pontos

      FROM

      qvd\Certos\Classificacao.qvd

      (qvd);

       

       

      então minha duvida consiste no seguinte problema, não estou conseguindo fazer o calculo para armazenar o Piloto campeão de cada ano!

      Alguem pode ajudar?

      Obrigado!

        • Duvida na montagem de script

          Rafael, bom dia!

          Derepente uma idéia que eu fiz para buscar somente a maior data de uma tabela e daí trazer o valor daquela data lhe ajude. Veja o exemplo:

           

          TMP_DIAS_UTEIS:

          -- aqui busco os meses e anos  e dia com informaçoes do dia util.
          LOAD
               ACID_DT_MES_ACIDENTE             AS AU_DT_MES_ACIDENTE,
               ACID_DT_ANO_ACIDENTE             AS AU_DT_ANO_ACIDENTE,
               ACID_DT_ACIDENTE                      AS AU_DT_DIA_ACIDENTE,
               NUM(ACID_DIAS_UTEIS_MES)       AS AU_DIAS_UTEIS_MES    
          RESIDENT ACIDENTE;


          DIAS_UTEIS:

          - aqui faço um load da tabela que criei acima, buscando somente o maior dia e depois monto a tabela novamente.
          LOAD AU_DT_ANO_ACIDENTE        AS  DIAU_DT_ANO_ACIDENTE,
               AU_DT_MES_ACIDENTE        AS  DIAU_DT_MES_ACIDENTE,
               MAX(AU_DT_DIA_ACIDENTE)   AS  DIAU_DT_DIA_ACIDENTE
          RESIDENT TMP_DIAS_UTEIS
          GROUP BY AU_DT_ANO_ACIDENTE, AU_DT_MES_ACIDENTE;
          LEFT JOIN
          LOAD
          NUM(MONTH(AU_DT_MES_ACIDENTE))  &'-'&
          AU_DT_ANO_ACIDENTE        AS  ACID_CHAVE_ANOMES_ACIDENTE,
          AU_DT_ANO_ACIDENTE     AS  DIAU_DT_ANO_ACIDENTE,
          AU_DT_MES_ACIDENTE        AS  DIAU_DT_MES_ACIDENTE,
          AU_DT_DIA_ACIDENTE        AS  DIAU_DT_DIA_ACIDENTE,
          AU_DIAS_UTEIS_MES         AS  DIAU_DIAS_UTEIS_MES
          RESIDENT TMP_DIAS_UTEIS;
          DROP TABLE TMP_DIAS_UTEIS;

           

          Creio que podes fazer a mesma coisa, só que em vez dos dias você usa a maior somatória de pontos do piloto

          para aquele ano.

           

          Att,

          Juliana.

           

          • Duvida na montagem de script
            Aderlan Rodrigues

            Rafael,

             

            Sem dúvida o código da Juliana lhe ajuda.

             

            No seu mesmo, só faltou o Group By, para funcionar.

             

            Abraço.

            • Duvida na montagem de script
              Aderlan Rodrigues

              Desculpe, agora que li com calma o seu Post.

               

              Correção no seu código:

              CampeoesAux:

              Directory;

              LOAD Ano, //anos de 1950 até 2011

                   Piloto  ,//Nome do piloto campeao

                   Equipe,//Equipe que os pilotos correu no ano

                   maxstring(sum(Pontos)) as Campeoes //Realizar calculo para armazenar somente o piloto com a maior quantodade de pontos

              FROM

              qvd\Certos\Classificacao.qvd

              (qvd)

              Group By Ano, Piloto, Equipe;

               

              Você não precisa do IF, tem que usar MAX ou MAXSTRING, conforme a necessidade, e o GROUP BY, deve ter o três primeiro campos, ou seja, os campos que agrupam os pontos.

               

              Não testei, se der algum erro, anexe o arquivo QVD e QVW para darmos uma olhada nos códigos, se for possível, senão, tentamos ajudar por texto mesmo... rsrsrsrs...

               

              Grande abraço.

              • Re: Duvida na montagem de script
                Rafael Mendes da Silva

                Valeu galera deu certo,

                Obrigado pela Dica!

                 

                Segue como montei o script:

                 

                CampeoesAux:

                Directory;

                LOAD    distinct(Ano)     as ano_test,

                                     Piloto               as pilot_test,

                             sum(Pontos)     as campeao_teste    

                FROM

                     qvd\Certos\Classificacao.qvd

                     (qvd)Group By Ano, Piloto;

                Left Join

                LOAD    Ano                as ano_test,

                             Piloto             as pilot_test,

                             Equipe           as equip_test

                FROM

                     qvd\Certos\Classificacao.qvd (qvd);

                 

                 

                Campeoes:

                LOAD      ano_test                            as Anoo,

                               MAX(campeao_teste)         as Campeao

                Resident CampeoesAux

                     Group By ano_test;

                Left Join

                LOAD     ano_test                                        as Anoo,

                              pilot_test           as Pilot,

                              equip_test         as Equip,

                                     campeao_teste   as Campeao

                Resident CampeoesAux;

                 

                DROP Table CampeoesAux;