Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera, preciso fazer um sql que está me dando dor de cabeça. Talvez alguém aí possa me ajudar.
Tenho um conjunto de dados como o que segue
id Ano Mes programa acao etapa tipoAcao indicador expectativa periodicidade cargo setor orgao data meta medido desempenho cor acaoIndicador analiseIndicador verificado dataInicial dataFinal status
566690 2014 6 CIDADE DA PARTICIPAÇÃO AÇÕES DE POLÍTICAS SOCIAIS NULL Correntes Ações de Empoderamento Local da Comunidade Santo André Aumentar quadrimestral Líder da Ação Governança Rede de Sustentabilidade e Cidadania SMGL 2014-04-30 00:00:00.000 1 1 100 VD Sim 2014-01-01 00:00:00.000 2014-04-30 00:00:00.000 A
566689 2014 6 CIDADE DA PARTICIPAÇÃO AÇÕES DE POLÍTICAS SOCIAIS NULL Correntes Ações de Empoderamento Local da Comunidade Santo André Aumentar quadrimestral Líder da Ação Governança Rede de Sustentabilidade e Cidadania SMGL 2014-08-31 00:00:00.000 2 0 0 VD Sim 2014-05-01 00:00:00.000 2014-08-31 00:00:00.000 F
566688 2014 6 CIDADE DA PARTICIPAÇÃO AÇÕES DE POLÍTICAS SOCIAIS NULL Correntes Ações de Empoderamento Local da Comunidade Santo André Aumentar quadrimestral Líder da Ação Governança Rede de Sustentabilidade e Cidadania SMGL 2014-12-31 00:00:00.000 3 0 0 VD Sim 2014-09-01 00:00:00.000 2014-12-31 00:00:00.000 F
564361 2014 6 CIDADE DA PARTICIPAÇÃO AÇÕES DE POLÍTICAS SOCIAIS NULL Correntes Intervenções para Melhoria do Atendimento das Políticas Sociais Aumentar semestral Lider da Ação Gabinete SMGL 2014-06-30 00:00:00.000 1 1 100 VD Sim 2014-01-01 00:00:00.000 2014-06-30 00:00:00.000 A
564360 2014 6 CIDADE DA PARTICIPAÇÃO AÇÕES DE POLÍTICAS SOCIAIS NULL Correntes Intervenções para Melhoria do Atendimento das Políticas Sociais Aumentar semestral Lider da Ação Gabinete SMGL 2014-12-31 00:00:00.000 2 0 0 VD Sim 2014-07-01 00:00:00.000 2014-12-31 00:00:00.000 F
564172 2014 6 CIDADE DA PARTICIPAÇÃO ARTICULAÇÃO DOS CONSELHOS MUNICIPAIS NULL Correntes Casa dos Conselhos Aumentar anual Líder da Ação Conselhos Municipais SMGL 2014-12-31 00:00:00.000 37 0 0 CZ Sim 2014-01-01 00:00:00.000 2014-12-31 00:00:00.000 F
564171 2014 6 CIDADE DA PARTICIPAÇÃO ARTICULAÇÃO DOS CONSELHOS MUNICIPAIS NULL Correntes Casa dos Conselhos Aumentar anual Líder da Ação Conselhos Municipais SMGL 2015-12-31 00:00:00.000 79 0 0 CZ Sim 2015-01-01 00:00:00.000 2015-12-31 00:00:00.000 F
564170 2014 6 CIDADE DA PARTICIPAÇÃO ARTICULAÇÃO DOS CONSELHOS MUNICIPAIS NULL Correntes Casa dos Conselhos Aumentar anual Líder da Ação Conselhos Municipais SMGL 2016-12-31 00:00:00.000 90 0 0 CZ Sim 2016-01-01 00:00:00.000 2016-12-31 00:00:00.000 F
564169 2014 6 CIDADE DA PARTICIPAÇÃO ARTICULAÇÃO DOS CONSELHOS MUNICIPAIS NULL Correntes Casa dos Conselhos Aumentar anual Líder da Ação Conselhos Municipais SMGL 2017-12-31 00:00:00.000 100 0 0 CZ Sim 2017-01-01 00:00:00.000 2017-12-31 00:00:00.000 F
564574 2014 6 CIDADE DA PARTICIPAÇÃO ARTICULAÇÃO DOS CONSELHOS MUNICIPAIS NULL Correntes Conselhos Municipais com Página WEB Aumentar anual Líder da Ação Gestão de Democracia Participativa SMGL 2013-12-31 00:00:00.000 0 6 0 CZ Sim 2013-01-01 00:00:00.000 2013-12-31 00:00:00.000 A
564573 2014 6 CIDADE DA PARTICIPAÇÃO ARTICULAÇÃO DOS CONSELHOS MUNICIPAIS NULL Correntes Conselhos Municipais com Página WEB Aumentar anual Líder da Ação Gestão de Democracia Participativa SMGL 2014-12-31 00:00:00.000 13 0 0 CZ Sim 2014-01-01 00:00:00.000 2014-12-31 00:00:00.000 F
564572 2014 6 CIDADE DA PARTICIPAÇÃO ARTICULAÇÃO DOS CONSELHOS MUNICIPAIS NULL Correntes Conselhos Municipais com Página WEB Aumentar anual Líder da Ação Gestão de Democracia Participativa SMGL 2015-12-31 00:00:00.000 26 0 0 CZ Sim 2015-01-01 00:00:00.000 2015-12-31 00:00:00.000 F
O que acontece?
Todo mês uma planilha é importada no sistema contendo dados brutos como esses.
Cada vez que a planilha é importada é guardado o ano e o mês de importação (como podem ver, a coluna ano contém 2014 e a coluna mês contém 6).
Pois bem, então preciso fazer um agrupamento no fim por ano e mês.
No geral o que preciso fazer é para cada entrada de dados (essa planilha importada mensalmente) descobrir quantos indicadores tenho dentro de cada programa. Um programa é composto por ações e as ações possuem indicadores. Até aí tudo bem: faria o group by pelo ano, mes, data, programa, ação, indicador e depois faria um count dos indicadores.
Agora a coisa complica um pouquinho. Você me pergunta por quê? Eu te respondo por quê! heheeh
Sempre devemos considerar apenas o tipoAcao 'Correntes' e verificado = 'Sim'.
Tá, mas, Brunoooo, o que tem de complicado nisso? Nada! É só colocar um where e pronto!
OK, até aqui tudo bem. O problema mesmo começa agora:
Temos a coluna 'status' no qual temos o valor 'A' para a medição atual e o valor 'F' para as metas do futuro.
Temos vários tipos de medição, que podem ser verificados na coluna 'periodicidade'. Eles podem ser 'mensal', 'bimestral', 'trimestral', 'quadrimestral', 'semestral', ou 'anual'.
Então primeiro precisamos selecionar um subconjunto no qual o status é 'A', a coluna data deve ser verificada de acordo com a periodicidade. Por exemplo, se a periodicidade for mensal, o valor da coluna deve ser algum dia de maio, se for quadrimestral, deve ser num dos últimos 4 meses, se for semestral deve ser num dos últimos 6 meses.
Após fazer essa verificação, deve-se verificar se há valor na coluna 'medido'.
Se esses requisitos forem preenchidos, ok, o indicador ainda pode ser contado, se não, está fora.
Agora, devemos verificar se o indicador possui meta para o restante do tempo.
As metas são verificadas quando a coluna status tem o valor 'F' e a coluna meta está preenchida, ou então, se ela não estiver preenchida, as colunas acaoIndicador e analiseIndicador devem estar preenchidas.
Para um indicador com periodicidade mensal, no mês de junho, deve possuir metas para os próximos meses do ano (Jul, Ago, Set, Out, Nov, Dez).
Se passar por isso tudo, ele pode entrar na conta da quantidade de indicadores que temos. Caso contrário, está fora.
Exemplo:
d Ano Mes programa acao etapa tipoAcao indicador expectativa periodicidade cargo setor orgao data meta medido desempenho cor acaoIndicador analiseIndicador verificado dataInicial dataFinal status
566690 2014 6 CIDADE DA PARTICIPAÇÃO AÇÕES DE POLÍTICAS SOCIAIS NULL Correntes Ações de Empoderamento Local da Comunidade Santo André Aumentar quadrimestral Líder da Ação Governança Rede de Sustentabilidade e Cidadania SMGL 2014-04-30 00:00:00.000 1 1 100 VD Sim 2014-01-01 00:00:00.000 2014-04-30 00:00:00.000 A
566689 2014 6 CIDADE DA PARTICIPAÇÃO AÇÕES DE POLÍTICAS SOCIAIS NULL Correntes Ações de Empoderamento Local da Comunidade Santo André Aumentar quadrimestral Líder da Ação Governança Rede de Sustentabilidade e Cidadania SMGL 2014-08-31 00:00:00.000 2 0 0 VD Sim 2014-05-01 00:00:00.000 2014-08-31 00:00:00.000 F
566688 2014 6 CIDADE DA PARTICIPAÇÃO AÇÕES DE POLÍTICAS SOCIAIS NULL Correntes Ações de Empoderamento Local da Comunidade Santo André Aumentar quadrimestral Líder da Ação Governança Rede de Sustentabilidade e Cidadania SMGL 2014-12-31 00:00:00.000 3 0 0 VD Sim 2014-09-01 00:00:00.000 2014-12-31 00:00:00.000 F
Essas 3 linhas estão agrupadas pelo ano 2014, mês 6, programa CIDADE DA PARTICIPAÇÃO, ação AÇÕES DE POLÍTICAS SOCIAIS, indicador Ações de Empoderamento Local da Comunidade Santo André.
Ele é um indicador quadrimestral. É verificado e seu tipo de ação é corrente. OK, ele entra nesses requisitos.
A medição atual está em Abril. Como é quadrimestral, está valendo.
Ele possui duas linhas com metas no futuro (Agosto e Dezembro). Então esse indicador entra para aquela contagem final. Mas caso não tivesse dezembro, por exemplo, já não entraria.
Então, deu pra entender meu problema? Alguém pode me dar uma luz de como fazer todas essas verificações?
Carregando comentários...