interlegis / sigi

Sistema de Informações Gerenciais do Interlegis

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PRIORIDADE - 0:00: Totalização de Participantes de cada Oficina: PERFIL DO ESTUDANTE + PRESENCA. (Alimentar o SIGI)

leilacarvalho-git opened this issue · comments

ATIVIDADES DO TKT:

Construir a seguinte TOTALIZAÇÃO de Participantes de uma determinada Oficina, buscando:
-campos do PERFIL DO ESTUDANTE (Questionnaire JOIN com User):Tipo Instituição; UF e Município.
-campos de PRESENÇA em AULA (Presente ou Ausente): descobrir qual tabela e qual campo. Vale qq valor percentual acima de ZERO (presença > 0.00%).

Totalizando por: Tipo Instituição; UF; Município; TOTAL de Participantes.

Ex:
Tipo Instituição.....UF.....Município.....Total
Câmara1...............SP......M1..................10
Câmara2...............SP......M2.................02
Câmara1...............MG.....M1..................05
TOTAL GERAL.......................................17

*Instalar CLIENTE SQL para o Saberes:
https://docs.google.com/document/d/1xcf6LftnS-Yw2WUsOWmI6wMpWzK4ALTmT5Ctwi6zH6c/edit?usp=sharing

*Drivers PostgreSQL para o Saberes: https://jdbc.postgresql.org/download.html

*Estrutura das tabelas:
https://comunidade.badiu.com.br/mod/forum/discuss.php?d=58

*Badiu-GERAL:
https://comunidade.badiu.com.br/mod/forum/discuss.php?d=58

*DESENVOLVEDORES - vários EXEMPLOS de SQL:
https://comunidade.badiu.com.br/mod/forum/view.php?id=1

*LIST of VARIABLES for CONFIGURABLE REPORTS:
https://www.lmspulse.com/2015/list-of-all-variables-and-filters-for-moodles-configurable-reports-plugin/


EXEMPLO - SQL do Sesostris: total de Participantes somente por UF:

select pqtqc.content, count(distinct pqtr.userid)
from mdl_questionnaire pqt
inner join mdl_questionnaire_question pqtq on pqtq.surveyid=pqt.sid
and pqtq.name='QUEST_UF_RESIDENCIA'
inner join mdl_questionnaire_response pqtr on pqtr.questionnaireid = pqt.id
inner join mdl_questionnaire_resp_single pqtrs on pqtrs.response_id=pqtr.id
inner join mdl_questionnaire_quest_choice pqtqc on pqtqc.id=pqtrs.choice_id
and pqtqc.question_id=pqtq.id
where pqt.id=1357
group by pqtqc.content
order by pqtqc.content


select
count(firstname) as participantes,
(select qqc.content
from mdl_questionnaire_resp_single qrs
inner join mdl_questionnaire_question qq on qq.id = qrs.question_id and qq.surveyid = qs.id and qq.name = 'QUEST_UF_RESIDENCIA'
inner join mdl_questionnaire_quest_choice qqc on qqc.question_id = qq.id and qqc.id = qrs.choice_id
where qrs.response_id=qr.id) as UF_RESIDENCIA,
(select qqc.content
from mdl_questionnaire_resp_single qrs
inner join mdl_questionnaire_question qq on qq.id = qrs.question_id and qq.surveyid = qs.id and qq.name = 'QUEST_TIPO_INSTITUICAO'
inner join mdl_questionnaire_quest_choice qqc on qqc.question_id = qq.id and qqc.id = qrs.choice_id
where qrs.response_id=qr.id) as TIPO_INSTITUICAO,
(select qrt.response
from mdl_questionnaire_response_text qrt
inner join mdl_questionnaire_question qq on qq.id = qrt.question_id and qq.surveyid = qs.id and qq.name = 'QUEST_MUNICIPIO_RESIDENCIA'
where qrt.response_id=qr.id) as MUNICIPIO_RESIDENCIA
from mdl_questionnaire q
inner join mdl_questionnaire_survey qs on qs.id = q.sid
inner join mdl_questionnaire_response qr on qr.questionnaireid = q.id
inner join mdl_user u on u.id = qr.userid
where qs.courseid = 1933 and qs.name ilike '%erfil%'
group by tipo_instituicao, uf_residencia, municipio_residencia;

[9:10 am, 29/03/2022] Leila: Bom dia, colegas!!

@ILB.Davi Galati.estagiário e @ILB.Lude Yuri.estagiário, para ajudá-los, preparei ontem a consulta com subqueries p os campos nome, uf, município e tipoInstituicao. 👇👇

Faltam pequenos ajustes, q vcs podem pedir ajuda de @ILB.Sesostris, ok?? Ele é o mestre do SQL. Eu sou apenas iniciante.rss..

Tb pesquisei q os recursos a usar no PostgreSQL são “crosstab” ou “pivot” p transformar linhas em colunas.

Seguem 2 links p vcs tb pesquisarem. É um desafio suuupper interessante:
CROSSTAB:https://medium.com/@mkober7/postgresql-funcao-crosstab-8da173efa0d2
PIVOT:https://andrebtoe.com/2013/07/18/convertendo-linha-em-coluna-rapidinha/
[9:10 am, 29/03/2022] Leila: SELECT distinct u.firstname, upper(concat(u.firstname, ' ', u.lastname)) as NOME,

(SELECT qqc.content
FROM prefix_questionnaire_quest_choice qqc, prefix_questionnaire_resp_single qrs
WHERE qrs.choice_id = qqc.id
AND qrs.response_id = qr.id
AND qrs.question_id = qq.id AND qq.name='QUEST_UF_RESIDENCIA'
AND qr.userid = u.id
) AS UF,

(SELECT qqc.content
FROM prefix_questionnaire_quest_choice qqc, prefix_questionnaire_resp_single qrs
WHERE qrs.choice_id = qqc.id
AND qrs.response_id = qr.id
AND qrs.question_id = qq.id AND qq.name='QUEST_TIPO_INSTITUICAO'
AND qr.userid = u.id
) AS TIPO_INSTITUICAO,

(SELECT qrt.response
FROM prefix_questionnaire_response_text qrt
WHERE qrt.response_id = qr.id
AND qrt.question_id = qq.id AND qq.name='QUEST_MUNICIPIO_RESIDEN…
[9:15 am, 29/03/2022] Leila: Importante: onde estiver “prefix_questionnaire’, substituam por ‘mdl_questionnaire’. Blz??

Já, já estarei aí presencial. Estou aqui resolvendo outras demandas de seleção de novos colegas estagiários.

Qq dúvida, podem me chamar ou tb mandar zap p @ILB.Sesostris.👍🏻
[9:19 am, 29/03/2022] ILB.Sesostris: Tô aqui. Precisando, é só chamar
[9:29 am, 29/03/2022] Leila: Opa!! @ILB.Sesostris, p favor, ajude-nos a ajustar minha query p ficar só 1 linha c nome, uf, município e tipoInstituicao. Fiz esse draft ontem à noite. Qd executo, ficam 3 linhas p cada user, com os campos em linhas diferentes.rsss…🤣🙈

Tenho q criar um relatório p Maria até 5af.
[9:33 am, 29/03/2022] Leila: Vejam o resultado, q deixei num teste lá dentro do ConfigurableReports do Moodle: https://saberes.senado.leg.br/blocks/configurable_reports/viewreport.php?id=27&courseid=1863
[9:42 am, 29/03/2022] Leila: @ILB.Sesostris, essa aí é a query q implementei ontem à noite. Está com inicial ‘prefix_’ pq testei via Saberes, e não via VPN cliente SQL.😢
[10:29 am, 29/03/2022] ILB.Sesostris: Vou olhar
[11:29 am, 29/03/2022] ILB.Sesostris: select
upper(concat(u.firstname, ' ', u.lastname)) as name,
(select qqc.content
from prefix_questionnaire_resp_single qrs
inner join prefix_questionnaire_question qq on qq.id = qrs.question_id and qq.surveyid = qs.id and qq.name = 'QUEST_UF_RESIDENCIA'
inner join prefix_questionnaire_quest_choice qqc on qqc.question_id = qq.id and qqc.id = qrs.choice_id
where qrs.response_id=qr.id) as UF_RESIDENCIA,
(select qqc.content
from prefix_questionnaire_resp_single qrs
inner join prefix_questionnaire_question qq on qq.id = qrs.question_id and qq.surveyid = qs.id and qq.name = 'QUEST_TIPO_INSTITUICAO'
inner join prefix_questionnaire_quest_choice qqc on qqc.question_id = qq.id and qqc.id = qrs.choice_id
where qrs.response_id=qr.id) as TIPO_INSTITUICAO,
(select qrt.response
from prefix_questionnaire_response_text qrt
inner join prefix_questionnaire_question qq on qq.id = qrt.question_id and qq.surveyid = qs.id and qq.name = 'QUEST_MUNICIPIO_RESIDENCIA'
where qrt.response_id=qr.id) as MUNICIPIO_RESIDENCIA
from prefix_questionnaire q
inner join prefix_questionnaire_survey qs on qs.id = q.sid
inner join prefix_questionnaire_response qr on qr.questionnaireid = q.id
inner join prefix_user u on u.id = qr.userid
where qs.courseid = 1933 and qs.name ilike '%erfil%'
[11:29 am, 29/03/2022] ILB.Sesostris: @leila 👆
[11:31 am, 29/03/2022] Leila: Mtt bom!! Vou testar assim q chegar ao ILB.

@ILB.Davi Galati.estagiário e @ILB.Lude Yuri.estagiário, vcs já podem ir testando, p favor??
[0:29 pm, 29/03/2022] Leila: @ILB.Sesostris, funcionou superrr!! Já estou fazendo ampliações p aplicar p as demais queries. Mtttttttttttt obrigada.👍
[1:34 pm, 29/03/2022] Leila: 😂🤣
[4:18 pm, 29/03/2022] Leila: @ILB.Davi Galati.estagiário, para determinar se é participante "Ouvinte", fazer um CASE para verificar se foi escolhida a QUEST_TIPO_INSTITUICAO como "Instituição Privada" ou "Nenhuma".
[6:02 pm, 29/03/2022] Leila: @ILB.Sesostris, @ILB.Davi Galati.estagiário e @ILB.Lude Yuri.estagiário, muito obrigada pela suuuperr ajuda de vocês na implementação dos SQLs no Moodle. Acabei de criar 2 novos relatórios no Saberes, grupo ConfigurableReports, que fica disponível p todas as Oficinas. Ainda precisarei complementar a totalização com a informação de PRESENÇA, mas eu mesma farei isso. Valeu!!! Agora, podemos retornar ao SIGI a partir de amanhã. Blz?? Mtt obrigada.
WhatsApp Image 2022-03-28 at 2 46 11 PM
WhatsApp Image 2022-03-28 at 4 04 56 PM (1)
WhatsApp Image 2022-03-29 at 9 33 53 AM
WhatsApp Image 2022-03-29 at 6 02 08 PM
WhatsApp Image 2022-03-29 at 4 18 43 PM (1)
WhatsApp Image 2022-03-29 at 4 18 43 PM
WhatsApp Image 2022-03-28 at 4 04 56 PM

LEILA: mplementou a query inicial.
SESOSTRIS: revisou e ajustou a query.
GALATI: complementou e finalizou.
LEILA:criou o relatório no Saberes.