Dúvida - Função ´SUM´

28/09/2004

0

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;


Responder

Posts

28/09/2004

Marcus.magalhaes

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,


Responder

28/09/2004

Jbb

Caro Marcus;
Muito obrigado! :-)
e boa tarde!


Responder

28/09/2004

Jbb

[quote=´jbb´]Caro Marcus;
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))


Responder

28/09/2004

Marcus.magalhaes

Use a mesma estrutura :

Select xxx
From xxxx
Where xxx
Group by xxx
Having xxx
Order by xxx
Compute xxx [by column]

Att,


Responder

20/10/2004

Jbb

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.


Responder

21/10/2004

Marcus.magalhaes

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,


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar