Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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!
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.
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.
Rafael,
Sem dúvida o código da Juliana lhe ajuda.
No seu mesmo, só faltou o Group By, para funcionar.
Abraço.
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.
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;