wawaanjo 0 Denunciar post Postado Fevereiro 16, 2014 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
Motta 645 Denunciar post Postado Fevereiro 16, 2014 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
wawaanjo 0 Denunciar post Postado Fevereiro 17, 2014 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
Motta 645 Denunciar post Postado Fevereiro 17, 2014 Nao some a nota, agrupe-a como uma coluna identificadora. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 17, 2014 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