Dúvida - Função ´SUM´
bom dia!
Tenho a seguinte consulta:
SELECT COUNT(DISTINCT UMATRICPL.MATALUNO) AS NºALUNOS,UMATRICPL.CODCUR,
UMATRICPL.CODPER,UPERIODOS.HABILITACAO,
TURNO = CASE
WHEN SUBSTRING(UMATRICPL.IDALUNO1,4,1) = ´N´ THEN ´NOTURNO´
WHEN SUBSTRING(UMATRICPL.IDALUNO1,4,1) = ´M´ THEN ´MATUTINO´
ELSE ´NULLO´
END
FROM UMATRICPL, UPERIODOS
WHERE UMATRICPL.PERLETIVO = ´2004´
AND STATUS =´1´
AND UMATRICPL.CODCUR = UPERIODOS.CODCUR
AND UMATRICPL.CODPER = UPERIODOS.CODPER
GROUP BY UMATRICPL.CODCUR,UMATRICPL.CODPER,UPERIODOS.HABILITACAO,
SUBSTRING(UMATRICPL.IDALUNO1,4,1)
Retorno da consulta no grid:
NºAlu CodCur CodPer Habilitacao Turno
9611DIREITOMATUTINO
52311DIREITONOTURNO
Gostaria de saber se tem como incluir uma variável ou mesmo a função ´SUM´ para q no final da linha do grid de dados seja totalizado o valor do NºAlu acompanhado da frase total como abaixo.
NºAlu CodCur CodPer Habilitacao Turno
9611DIREITOMATUTINO
52311DIREITONOTURNO
619 <- Total
Desde já grato pela atenção;
Tenho a seguinte consulta:
SELECT COUNT(DISTINCT UMATRICPL.MATALUNO) AS NºALUNOS,UMATRICPL.CODCUR,
UMATRICPL.CODPER,UPERIODOS.HABILITACAO,
TURNO = CASE
WHEN SUBSTRING(UMATRICPL.IDALUNO1,4,1) = ´N´ THEN ´NOTURNO´
WHEN SUBSTRING(UMATRICPL.IDALUNO1,4,1) = ´M´ THEN ´MATUTINO´
ELSE ´NULLO´
END
FROM UMATRICPL, UPERIODOS
WHERE UMATRICPL.PERLETIVO = ´2004´
AND STATUS =´1´
AND UMATRICPL.CODCUR = UPERIODOS.CODCUR
AND UMATRICPL.CODPER = UPERIODOS.CODPER
GROUP BY UMATRICPL.CODCUR,UMATRICPL.CODPER,UPERIODOS.HABILITACAO,
SUBSTRING(UMATRICPL.IDALUNO1,4,1)
Retorno da consulta no grid:
NºAlu CodCur CodPer Habilitacao Turno
9611DIREITOMATUTINO
52311DIREITONOTURNO
Gostaria de saber se tem como incluir uma variável ou mesmo a função ´SUM´ para q no final da linha do grid de dados seja totalizado o valor do NºAlu acompanhado da frase total como abaixo.
NºAlu CodCur CodPer Habilitacao Turno
9611DIREITOMATUTINO
52311DIREITONOTURNO
619 <- Total
Desde já grato pela atenção;
Jbb
Curtidas 0
Respostas
Marcus.magalhaes
28/09/2004
Boa tarde.
Segue abaixo uma dica do q vc pode fazer:
[color=green:797ce8db78]SELECT COUNT(DISTINCT UMATRICPL.MATALUNO) AS NºALUNOS,UMATRICPL.CODCUR,
UMATRICPL.CODPER,UPERIODOS.HABILITACAO,
TURNO = CASE
WHEN SUBSTRING(UMATRICPL.IDALUNO1,4,1) = ´N´ THEN ´NOTURNO´
WHEN SUBSTRING(UMATRICPL.IDALUNO1,4,1) = ´M´ THEN ´MATUTINO´
ELSE ´NULLO´
END
FROM UMATRICPL, UPERIODOS
WHERE UMATRICPL.PERLETIVO = ´2004´
AND STATUS =´1´
AND UMATRICPL.CODCUR = UPERIODOS.CODCUR
AND UMATRICPL.CODPER = UPERIODOS.CODPER
GROUP BY UMATRICPL.CODCUR,UMATRICPL.CODPER,UPERIODOS.HABILITACAO,
SUBSTRING(UMATRICPL.IDALUNO1,4,1) [/color:797ce8db78]
[color=red:797ce8db78]COMPUTE SUM(COUNT(DISTINCT UMATRICPL.MATALUNO))[/color:797ce8db78]
Att,
Segue abaixo uma dica do q vc pode fazer:
[color=green:797ce8db78]SELECT COUNT(DISTINCT UMATRICPL.MATALUNO) AS NºALUNOS,UMATRICPL.CODCUR,
UMATRICPL.CODPER,UPERIODOS.HABILITACAO,
TURNO = CASE
WHEN SUBSTRING(UMATRICPL.IDALUNO1,4,1) = ´N´ THEN ´NOTURNO´
WHEN SUBSTRING(UMATRICPL.IDALUNO1,4,1) = ´M´ THEN ´MATUTINO´
ELSE ´NULLO´
END
FROM UMATRICPL, UPERIODOS
WHERE UMATRICPL.PERLETIVO = ´2004´
AND STATUS =´1´
AND UMATRICPL.CODCUR = UPERIODOS.CODCUR
AND UMATRICPL.CODPER = UPERIODOS.CODPER
GROUP BY UMATRICPL.CODCUR,UMATRICPL.CODPER,UPERIODOS.HABILITACAO,
SUBSTRING(UMATRICPL.IDALUNO1,4,1) [/color:797ce8db78]
[color=red:797ce8db78]COMPUTE SUM(COUNT(DISTINCT UMATRICPL.MATALUNO))[/color:797ce8db78]
Att,
GOSTEI 0
Jbb
28/09/2004
Caro Marcus;
Muito obrigado! :-)
e boa tarde!
Muito obrigado! :-)
e boa tarde!
GOSTEI 0
Jbb
28/09/2004
[quote=´jbb´]Caro Marcus;
Muito obrigado! :-)
e boa tarde!
Muito obrigado! :-)
e boa tarde!
Marcus,
Estou ordenando a sentença pelo turno agora.
Como montar um COMPUTE SUM() que me retornaria
o total por turno ou seja seria o COMPUTE acompanhado de
da cláusula WHERE ?
AND UMATRICPL.CODPER = UPERIODOS.CODPER
GROUP BY UMATRICPL.CODCUR,UMATRICPL.CODPER,UPERIODOS.HABILITACAO,
SUBSTRING(UMATRICPL.IDALUNO1,4,1)
-----> ORDER BY SUBSTRING(UMATRICPL.IDALUNO1,4,1) <----
COMPUTE SUM(COUNT(DISTINCT UMATRICPL.MATALUNO))
GOSTEI 0
Marcus.magalhaes
28/09/2004
Use a mesma estrutura :
Select xxx
From xxxx
Where xxx
Group by xxx
Having xxx
Order by xxx
Compute xxx [by column]
Att,
Select xxx
From xxxx
Where xxx
Group by xxx
Having xxx
Order by xxx
Compute xxx [by column]
Att,
GOSTEI 0
Jbb
28/09/2004
boa tarde Marcus!
A consulta seguinte:
SELECT UPERIODOS.HABILITACAO, COUNT(DISTINCT UMATRICPL.MATALUNO) AS NºALUNOS,
UMATRICPL.PERLETIVO,
UMATRICPL.CODCUR,
UMATRICPL.CODPER
FROM UMATRICPL, UPERIODOS
WHERE (UMATRICPL.PERLETIVO =´2004/1´ OR
UMATRICPL.PERLETIVO = ´2004/2´)
AND (UMATRICPL.STATUS =´1´
OR UMATRICPL.STATUS =´11´OR UMATRICPL.STATUS =´13´)
AND UMATRICPL.CODCUR = UPERIODOS.CODCUR
AND UMATRICPL.CODPER = UPERIODOS.CODPER
GROUP BY UMATRICPL.CODCUR,UMATRICPL.CODPER,UPERIODOS.HABILITACAO,
UMATRICPL.PERLETIVO
ORDER BY UMATRICPL.CODCUR,UMATRICPL.CODPER,UMATRICPL.PERLETIVO
COMPUTE SUM(COUNT(DISTINCT UMATRICPL.MATALUNO))BY UMATRICPL.CODCUR,UMATRICPL.CODPER
Retorna o total de alunos em cada período letivo por curso/
Total de alunos no curso.
NºAlu Cod Cur CodPer
600 1 1 2004/1
523 1 1 2004/2
1123 <- Total do curso
Estou com as seguintes dúvidas
Como trazer no lugar do Total de Alunos no curso a diferença entre os totais de alunos entre cada período letivo ?
NºAlu Cod Cur CodPer
600 1 1 2004/1
523 1 1 2004/2
077 <- Diferença
Tem como montar expressões(*100/88 + 50 - ´SUM´...etc) com o compute
de forma a retornar o valor da expressão que esta contido ?
desde já obrigado.
A consulta seguinte:
SELECT UPERIODOS.HABILITACAO, COUNT(DISTINCT UMATRICPL.MATALUNO) AS NºALUNOS,
UMATRICPL.PERLETIVO,
UMATRICPL.CODCUR,
UMATRICPL.CODPER
FROM UMATRICPL, UPERIODOS
WHERE (UMATRICPL.PERLETIVO =´2004/1´ OR
UMATRICPL.PERLETIVO = ´2004/2´)
AND (UMATRICPL.STATUS =´1´
OR UMATRICPL.STATUS =´11´OR UMATRICPL.STATUS =´13´)
AND UMATRICPL.CODCUR = UPERIODOS.CODCUR
AND UMATRICPL.CODPER = UPERIODOS.CODPER
GROUP BY UMATRICPL.CODCUR,UMATRICPL.CODPER,UPERIODOS.HABILITACAO,
UMATRICPL.PERLETIVO
ORDER BY UMATRICPL.CODCUR,UMATRICPL.CODPER,UMATRICPL.PERLETIVO
COMPUTE SUM(COUNT(DISTINCT UMATRICPL.MATALUNO))BY UMATRICPL.CODCUR,UMATRICPL.CODPER
Retorna o total de alunos em cada período letivo por curso/
Total de alunos no curso.
NºAlu Cod Cur CodPer
600 1 1 2004/1
523 1 1 2004/2
1123 <- Total do curso
Estou com as seguintes dúvidas
Como trazer no lugar do Total de Alunos no curso a diferença entre os totais de alunos entre cada período letivo ?
NºAlu Cod Cur CodPer
600 1 1 2004/1
523 1 1 2004/2
077 <- Diferença
Tem como montar expressões(*100/88 + 50 - ´SUM´...etc) com o compute
de forma a retornar o valor da expressão que esta contido ?
desde já obrigado.
GOSTEI 0
Marcus.magalhaes
28/09/2004
Bom dia.
Isso não é possível dentro do SQL (linguagem), pois o COMPUTE (BY) é usado para gerar subtotais e totais, médias, etc e não para efetuar operações matemáticas. Esse processo vc terá que fazer na sua aplicação.
Att,
Isso não é possível dentro do SQL (linguagem), pois o COMPUTE (BY) é usado para gerar subtotais e totais, médias, etc e não para efetuar operações matemáticas. Esse processo vc terá que fazer na sua aplicação.
Att,
GOSTEI 0