SCRIPT FIREBIRD TOP 5 DE GRUPOS ?

SQL

Firebird

15/11/2017

TENHO UMA BANCO DE DADOS COM ALUNOS E NOTAS , PRECISO DO TOP 5 DE CADA MATÉRIA
USANDO APENAS UM SCRIPT SQL :(TABELAS EXEMPLO) [PARECE FÁCIL]

MATÉRIAS :
ID_MATÉRIA
MATÉRIA

NOTAS :
ALUNO
NOTA
NT_MATÉRIA

o MAIS LÓGICO SERIA : (O JOIN ORGANIZA OS ALUNOS E NOTAS DO MAIOR PARA O MENOR E SEPARA 5)

SELECT ALUNO,MATÉRIA,NOTA_MX FROM MATÉRIAS
LEFT JOIN (SELECT FIRST 5 ALUNO,AVG(NOTA) NOTA_MX FROM NOTAS WHERE NT_MATÉRIA=ID_MATÉRIA
GROUP BY ALUNO,NT_MATÉRIA ORDER BY 2 DESC) 0N 1=1

MAS, ID_MATÉRIA DENTRO DO JOIN NÃO É RECONHECIDO , AI TENTARÍAMOS FORA DO JOIN :

SELECT ALUNO,MATÉRIA,NOTA_MX FROM MATÉRIAS
LEFT JOIN (SELECT FIRST 5 ALUNO,AVG(NOTA) NOTA_MX FROM NOTAS
GROUP BY ALUNO,NT_MATÉRIA ORDER BY 2 DESC) ALU ON ALU.NT_MATÉRIA=ID_MATÉRIA

ASSIM NÃO RETORNA DE FORMA CORRETA .

PARA QUEM GOSTA DE DESAFIO, MAS, POR FAVOR, SÓ OPINE DEPOIS DE TESTAR E TER CERTEZA QUE
FUNCIONA, AQUI NÃO CABE ACHISMOS, DEIXE PARA OS PROFISSIONAIS SE NÃO TEM CERTEZA.

ESTE SCRIPT TEM UM APLICAÇÃO GIGANTE : (OS 5 PRODUTOS MAIS VENDIDOS DOS DEPARTAMENTOS,
OS 5 ÚLTIMOS FORNECEDORES COM CUSTO DOS 10 PRODUTOS QUE MAIS VENDE, OS 5 CLIENTES QUE MAIS COMPRARAM
OS 10 PRODUTOS MAIS VENDIDOS ETC.)
Antonio Jesus

Antonio Jesus

Curtidas 0

Melhor post

Antonio Jesus

Antonio Jesus

17/11/2017

Forum não é brinquedo, e não é ferramenta de marketing, por favor moderador apague o post acima, é de uma pessoa inescrupulosa que usa o forum para promover a contravenção.
GOSTEI 1

Mais Respostas

Jinpei

Jinpei

15/11/2017

Comprar passaportes, licença de motorista, cartões de identidade, WhatsApp: +44 7537 180310 (travellersdocums@yahoo.com)

Compre passaportes registrados, licença de motorista, IELTS e TOEFL, certificados ESOL sem participar do exame



Email de contato ....... travellersdocums@yahoo.com

site ... http://www.traveldocuments.com

Whatsapp ...... +44 7537 180310


Temos anos de experiência na produção de passaportes reais / falsos de qualidade original, ID, licenças de motorista e muitos outros documentos de identidade, muito baratos para países como; Suíça, Reino Unido, Estados Unidos, Espanha, Suécia, Austrália, Áustria, Canadá, Chile, Dinamarca, Equador, Finlândia, França, Alemanha, Israel, Nova Zelândia, África do Sul, e.t.c.
Os passaportes com chip para os seguintes países também estão disponíveis para: Austrália, Áustria, Finlândia, Alemanha, Malásia, Países Baixos, Suécia, Suíça, Tailândia, Reino Unido, Estados Unidos, e.t.c.
Também podemos produzir documentos como permissão de trabalho, para o Reino Unido, EUA, Itália, apenas para citar alguns.
Você pode contatar-nos diretamente para obter as informações adicionais e fazer o pedido através do endereço abaixo.


Passaporte registrado e não registrado de todos os países.visas, passaporte biométrico, graus, carteira de motorista, cartões de identificação. Certificados de formação M GCSE, A-levels, Certificados de Diploma de Ensino Médio, GMAT, MCAT e Certificados de Exame LSAT, Novidade Nascimento, Casamento e Certificados de morte, passaportes de novidades e novos pacotes de identidade, duplicados, graus falsos / Diplomas da maioria das instituições pós-secundárias de todo o mundo (temos mais de 3000 modelos em arquivo) todos projetados para parecer 100% idênticos à impressão original. nós ainda não temos o modelo arquivado - simplesmente envie-nos uma cópia e podemos fazer quaisquer alterações / modificações de acordo com suas instruções). segundo, cidadania, identidade, identificação, documentos, diplomática, nacionalidade, como, onde, obter , obtenha, compre, compre, faça, construa, passaporte, id, britânico, Honduras, Reino Unido, EUA, nós, nós, Canadá, canadense, estrangeiro, visto, suíço, cartão, ids, documento, obtenção, vistos, cartões , estrangeiro.


Email de contato ....... travellersdocums@yahoo.com

site ... http://www.traveldocuments.com

Whatsapp ...... +44 7537 180310


Compre passaportes originais e falsos de alta qualidade, carteira de motorista e Ids da Austrália.

Compre Passaportes Originais e Falsos de Alta Qualidade, Licença de Motorista e Ids de Áustria

Compre Passaportes Originais e Falsos de Alta Qualidade, Licença de Driver e Ids de EUA

Compre passaportes originais e falsos de alta qualidade, licença de motorista e Ids of UK

Compre passaportes originais e falsos de alta qualidade, carteira de motorista e Ids of Canada

Compre passaportes originais e falsos de alta qualidade, carteira de motorista e Ids de Alemanha

Compre Passaportes Originais e Falsos de Alta Qualidade, Licença de Motorista e Ids de Itália

Compre passaportes originais e falsos de alta qualidade, carteira de motorista e Ids of France

Compre passaportes originais e falsos de alta qualidade, carteira de motorista e Ids da Finlândia

Compre Passaportes Originais e Falsos de Alta Qualidade, Licença de Motorista e Ids da Noruega

Compre Passaportes Originais e Falsos de Alta Qualidade, Licença de Motorista e Ids da Dinamarca

Compre Passaportes Originais e Falsos de Alta Qualidade, Licença de Motorista e Ids da Suécia

Compre Passaportes Originais e Falsos de Alta Qualidade, Licença de Motorista e Ids de Irlanda

Compre passaportes originais e falsos de alta qualidade, licença de motorista e Ids de China

Compre Passaportes Originais e Falsos de Alta Qualidade, Licença de Motorista e Ids da Romênia

Compre Passaportes Originais e Falsos de Alta Qualidade, Licença de Motorista e Ids da Hungria

Compre passaportes originais e falsos de alta qualidade, carteira de motorista e Ids da Bulgária

Compre Passaportes Originais e Falsos de Alta Qualidade, Licença de Motorista e Ids da Bélgica

Compre passaportes originais e falsos de alta qualidade, carteira de motorista e Ids da Suíça

Compre Passaportes Originais e Falsos de Alta Qualidade, Licença de Motorista e Ids de Espanha

Compre Passaportes Originais e Falsos de Alta Qualidade, Licença de Motorista e Ids do Brasil

Compre passaportes originais e falsos de alta qualidade, licença de motorista e Ids of Russian Federation

Compre Passaportes Originais e Falsos de Alta Qualidade, Licença de Motorista e Ids do México

Compre Passaportes Originais e Falsos de Alta Qualidade, Licença de Motorista e Ids da Grécia

Compre passaportes originais e falsos de alta qualidade, carteira de motorista e Ids de Portugal

Compre passaportes originais e falsos de alta qualidade, carteira de motorista e Ids of Estonia

Compre passaportes originais e falsos de alta qualidade, Licença de motorista e Ids de Letônia

Compre Passaportes Originais e Falsos de Alta Qualidade, Licença de Motorista e Ids de Malta

Compre Passaportes Originais e Falsos de Alta Qualidade, Licença de Motorista e Ids da Islândia

Compre passaportes originais e falsos de alta qualidade, carteira de motorista e Ids da Groenlândia

Compre passaportes originais e falsos de alta qualidade, carteira de motorista e Ids of South Africa

Compre passaportes originais e falsos de alta qualidade, licença de motorista e Ids of Jamica
GOSTEI 0
Antonio Jesus

Antonio Jesus

15/11/2017

OLÁ, RESOLVIDO, RESOLVÍ FAZER OUTRA ABORDAGEM, LISTAR OS ALUNOS DA TURMA E AS MATÉRIAS DO CURRÍCULO, E LISTAR OS 5 MELHORES ALUNOS DA MATÉRIA LISTADA, E VERIFICAR SE O ALUNO LISTADO FAZ PARTE DESTES 5 . FUNCIONOU BEM .

SELECT ALUNO,ID_MATERIA,MATÉRIA,(SELECT AVG(NOTA) FROM NOTAS WHERE NT_MATÉRIA=ID_MATERIA ) MEDIA FROM NOTAS NOTARES LEFT JOIN MATERIAS ON
WHERE NOTARES.ALUNO IN (SELECT FIRST 5 ALUNO FROM NOTAS WHERE NOTARES.ID_MATERIA=NOTAS.NT_MATERIA ORDER BY AVG(NOTA) DESC GROUP BY ALUNO )
ID_MATERIA=NX_MATERIA GROUP BY 1,2,3

O SCRIPT ORIGINAL :

SQL.ADD('SELECT MAT_CODIGO,ALU_NOME,');
SQL.ADD('(SELECT AVG(NOT_NOTA/AVA_NOTMAX*100) FROM CAVA LEFT JOIN CNOT ON AVA_SEQUEN=NOT_AVALIA');
SQL.ADD('WHERE NOT_MATRIC=ALU_MATRIC AND AVA_MATERI=TUM_MATERI AND AVA_NOME NOT IN (4,5)) ALU_NOTA');
SQL.ADD('FROM CALU');
SQL.ADD('LEFT JOIN CTUA ON TUA_MATRIC=ALU_MATRIC');
SQL.ADD('LEFT JOIN CTUM ON TUM_TURMA=TUA_TURMA');
SQL.ADD('LEFT JOIN CMAT ON MAT_CODIGO=TUM_MATERI');
SQL.ADD('LEFT JOIN CTUR ON TUR_CODIGO=TUA_TURMA');
SQL.ADD('WHERE TUM_TURMA=:_TUR AND ALU_MATRIC IN (SELECT FIRST :_TOP NOT_MATRIC FROM CNOT');
SQL.ADD('LEFT JOIN CAVA ON AVA_SEQUEN=NOT_AVALIA');
SQL.ADD('WHERE AVA_TURMA=TUM_TURMA AND TUM_MATERI=AVA_MATERI AND AVA_NOME NOT IN (4,5)');
SQL.ADD('GROUP BY AVA_TURMA,AVA_MATERI,NOT_MATRIC');
SQL.ADD('ORDER BY AVG(NOT_NOTA/AVA_NOTMAX*100) )');
SQL.ADD('ORDER BY 1,3 DESC');
Parambyname('_TUR').AsInteger:=ID_TURMA;
Parambyname('_TOP').AsInteger:=5;

GRATO PESSOAL, AGORA É APROVEITAR O CONCEITO DE TOP 5 DOS GRUPOS E CRIAR RELATÓRIOS .
GOSTEI 1
POSTAR