interlegis / sigi

Sistema de Informações Gerenciais do Interlegis
GNU General Public License v2.0
11 stars 11 forks source link

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

Closed leilacarvalho-git closed 2 years ago

leilacarvalho-git commented 2 years ago

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


Davi-Galati commented 2 years ago

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;

leilacarvalho-git commented 2 years ago

[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

leilacarvalho-git commented 2 years ago

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