Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wawaanjo

Contagem de Item e Soma de Notas

Recommended Posts

heys, help


Em uma Tabela (Tabela NOTAS) eu tenho todas Notas que foram atribuídas a cada Monitoria.

Em outra tabela (Tabela Ofensores) eu tenho todos os itens pontuados p/ cada monitoria.


Na minha query eu preciso buscar a Produtividade de cada Monitor (da área da Qualidade) e para isso eu conto os itens que ele pontuou em cada Monitoria. Isso eu busco na tabela Ofensores, mas na mesma query eu tenho que obter a média desse Monitor e para isso eu tenho que somar as Notas de cada Monitoria buscando na tabela de Notas



Exemplo: Quero a produtividade do Monitor: João da Silva


(Tabela de NOTAS)


Select ID_MONITORIA, NOTA

From Notas

Where Nome_Monitor = 'JOÃO DA SILVA'

And Data_Monitoria Between To_Date('22/12/2013','DD/MM/YYYY') And Trunc(Last_Day(Data_Monitoria))

Order by 1;


ID_MONITORIA NOTA

26724 93

26725 97

26739 97

26740 97

26788 96

26805 96

26932 96

26943 86


obs: A soma dessas Notas = 758



Select ID_AVALIACAO, ITEM_PONTUADO

From Ofensores

Where Nome_Monitor = 'JOÃO DA SILVA'

And Data_Avaliacao Between To_Date('22/12/2013','DD/MM/YYYY') And Trunc(Last_Day(Data_Avaliacao))

Order by 1;



ID_AVALIACAO ITEM_PONTUADO

26724 Procedimento de Espera

26724 Segurança e Credibilidade

26725 Procedimento de Espera

26739 Procedimento de Espera

26740 Procedimento de Espera

26788 Realizou os questionamentos pertinentes a arvore de decisão?

26805 Procedimento de Espera

26932 Segurança e Credibilidade

26943 Atenção e Concentração

26943 Procedimento de Espera

26943 Personalização

26943 Realizou os questionamentos pertinentes a arvore de decisão?


O João da Silva pontuou 12 itens



Meu problema é: Preciso obter a soma da nota, se eu buscar da forma abaixo dá o dobro do resultado. A Qtde de notas deve vir da tabela de Notas e a Qtde de Ofensores da Tabela de Ofensores.



Essa é minha query é essa: (Observe que o campo Nota está comentado, pois do contrário ele duplica as notas (já que a monitoria na tabela de ofensores duplica em função dos itens pontuados))


SELECT ANO,

MES,

MONITOR,

---- SUM(NOTA) NOTAS,

COUNT(*) QTD_SEM4

From

( Select T1.Ano,

T1.Mes,

T2.Matricula_Avaliador As Matricula_Monitor,

T1.Nome_Avaliador As Monitor,

T1.GERENCIA,

(CASE

WHEN EXTRACT(DAY FROM TRUNC(DATA_MONITORIA)) BETWEEN 1 AND 7 THEN '1º SEM'

WHEN EXTRACT(DAY FROM TRUNC(DATA_MONITORIA)) BETWEEN 8 AND 14 THEN '2º SEM'

WHEN EXTRACT(DAY FROM TRUNC(DATA_MONITORIA)) BETWEEN 15 AND 21 THEN '3º SEM'

WHEN EXTRACT(DAY FROM TRUNC(DATA_MONITORIA)) BETWEEN 22 AND EXTRACT(DAY FROM TRUNC(LAST_DAY(DATA_MONITORIA))) THEN '4º SEM'

END) SEMANA_MES,

Decode(T1.Nome_Sessao, 'ERROS CRITICOS', 'EC', 'ENC') Tipo_Erro,

T2.Data_Monitoria,

T1.Nome_Formulario

---- T2.Nota

From Ofensores T1

Join Notas T2

On T1.Id_Avaliacao = T2.Id_Monitoria

Where Nome_Monitor = 'JOÃO DA SILVA'

AND DATA_MONITORIA Between To_Date('22/12/2013','DD/MM/YYYY') And Trunc(Last_Day(Data_Monitoria))

)

WHERE SEMANA_MES = '4º SEM'

AND TIPO_ERRO = 'ENC'

GROUP BY ANO, MES, MONITOR


==> O campo NOTAS deve ser: 758

O campo QTD_SEM4 deve ser: 12 (Observe a qtde de ITEM_PONTUADO na query isolada acima)



Alguma idéia de como fazer isso??????


Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi seria uma tabela virtual com a nota do monitor , fazendo um join com ofensores.

 

A nota é do monitor e nao de cada ofensor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A nota é da Monitoria e não de cada ofensor. Cada monitoria foi atribuída uma nota a ela.

Eu até já tentei fazer isso. Em uma tabela virtual trazer a soma das notas e em outra a quantidade de ofensores, mas para fazer o join eu preciso trazer o ID da Monitoria e quando fiz esse Join ele acabou duplicando da mesma forma da query que postei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

TENTE

SELECT   ANO,
                       MES,
                       MONITOR,
                       NOTA NOTAS,

                       COUNT(*) QTD_SEM4
                From
                    ( Select  T1.Ano,
                              T1.Mes,
                              T2.Matricula_Avaliador As Matricula_Monitor,
                              T1.Nome_Avaliador As Monitor,
                              T1.GERENCIA,
                              (CASE
                                  WHEN EXTRACT(DAY FROM TRUNC(DATA_MONITORIA)) BETWEEN 1 AND 7 THEN '1º SEM'
                                  WHEN EXTRACT(DAY FROM TRUNC(DATA_MONITORIA)) BETWEEN 8 AND 14 THEN '2º SEM'
                                  WHEN EXTRACT(DAY FROM TRUNC(DATA_MONITORIA)) BETWEEN 15 AND 21 THEN '3º SEM'
                                  WHEN EXTRACT(DAY FROM TRUNC(DATA_MONITORIA)) BETWEEN 22 AND EXTRACT(DAY FROM TRUNC(LAST_DAY(DATA_MONITORIA))) THEN '4º SEM'
                              END) SEMANA_MES,
                              Decode(T1.Nome_Sessao, 'ERROS CRITICOS', 'EC', 'ENC') Tipo_Erro,
                              T2.Data_Monitoria,
                              T1.Nome_Formulario
                           ----   T2.Nota
                      From Ofensores T1
                      Join Notas T2
                      On T1.Id_Avaliacao = T2.Id_Monitoria 
                      Where Nome_Monitor = 'JOÃO DA SILVA'
                      AND DATA_MONITORIA Between To_Date('22/12/2013','DD/MM/YYYY') And Trunc(Last_Day(Data_Monitoria))
                    )
                WHERE SEMANA_MES = '4º SEM'
                AND TIPO_ERRO = 'ENC'
                GROUP BY ANO, MES, MONITOR,NOTA

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.