Alura > Cursos de Inteligência Artificial > Cursos de IA para Dados > Conteúdos de IA para Dados > Primeiras aulas do curso MySQL com IA: trabalhando com consultas e relatórios

MySQL com IA: trabalhando com consultas e relatórios

Criando relatórios de cursos e seções - Apresentação

Olá, tudo bem? Meu nome é Victorino Vila e boas-vindas a mais um curso na formação de MySQL com IA!

Audiodescrição: Victorino Vila é uma pessoa de pele clara e olhos escuros. Seus cabelos são curtos, lisos e grisalhos. Usa barba e bigode e está com uma camiseta azul marinho. Ao fundo, parede com iluminação verde e lilás. À direita, uma mesa com mini vasos.

O que vamos aprender?

Este curso dá continuidade à nossa jornada, agora com um enfoque em um aspecto essencial para qualquer sistema de informação: consultas e relatórios.

Utilizaremos, como sempre, a Escola BitByte como estudo de caso prático. A partir dela, serão implementados os relatórios que auxiliarão a equipe administrativa da escola no monitoramento do desempenho e na gestão acadêmica. Além disso, os estudantes poderão consultar relatórios que apresentarão seu desempenho individual dentro da instituição.

No curso anterior desta formação, mencionamos que uma outra equipe está desenvolvendo o sistema responsável pela interface entre a pessoa usuária e o banco de dados. Essa equipe tem a responsabilidade de disponibilizar no sistema relatórios claros e precisos, gerados por meio de consultas SQL no banco de dados da escola. É nesse ponto que nossa atuação se torna fundamental.

A nossa missão, neste curso, será implementar essas consultas, viabilizando a geração automática de relatórios para o sistema.

Nos relatórios, serão abrangidas informações como:

Todas essas informações serão consolidadas em relatórios de desempenho e indicadores estratégicos no RP. Nossa função é exclusivamente construir as consultas e fornecer os dados extraídos do banco de dados.

Integrando MySQL à inteligência artificial

Um ponto crucial que deve ser destacado: assim como em cursos anteriores, continuaremos neste curso integrando MySQL à inteligência artificial. O objetivo dessa abordagem é claro: acelerar a entrega de nosso trabalho, facilitar a criação de consultas SQL complexas e, naturalmente, reduzir erros, aumentando assim nossa produtividade. A combinação de MySQL com IA se consolidou como uma ferramenta indispensável para pessoas profissionais que atuam com banco de dados.

Aliando conhecimento em automação para o mercado de trabalho

Se esse conhecimento for aliado à expertise em linguagens de automação, como Python, que já foi abordado em outros cursos desta formação, estará um passo à frente no mercado de trabalho. O profissional que atualmente consegue dominar banco de dados, inteligência artificial e automação por meio de programação está preparado para enfrentar as demandas reais do mercado, oferecendo soluções ágeis, precisas e de alto valor tanto para clientes quanto para empresas.

Continuando a jornada de aprendizado

É com grande satisfação que temos você aqui conosco nesta jornada! Continuaremos juntos e tenho plena confiança de que, ao final deste curso, a pessoa se sentirá mais preparada para enfrentar os desafios relacionados aos sistemas de informação e à análise de dados. Sem mais delongas, iniciaremos o curso! Agradecemos imensamente por sua presença e dedicação. Seguiremos em frente, superando mais esta etapa da formação.

Até o próximo vídeo!

Criando relatórios de cursos e seções - Listando cursos e seções

Estamos acompanhando o desenvolvimento do banco de dados da Escola BitByte, utilizando a IA da Gemini para agilizar e aprimorar nossas implementações.

Recapitulando o aprendizado

Até o momento, realizamos diversas etapas essenciais. Inicialmente, analisamos as necessidades da escola e, com base nessas informações, projetamos o banco de dados, criando as tabelas com o auxílio da IA. Em seguida, importamos dados externos dos sistemas legados da instituição para o banco de dados.

Por fim, implementamos os processos transacionais, que serão acionados pelo ERP adotado pela empresa. Esses processos foram estabelecidos por meio de procedures, como a inclusão de estudantes, a matrícula de estudantes, a criação de cursos e o registro das respostas dos estudantes, entre outros. À medida que o sistema começou a ser utilizado, a base de dados foi crescendo em volume.

Chegou o momento de concentrarmos nossos esforços nas consultas e relatórios! Essas consultas serão acessadas pelo RP da empresa para gerar relatórios visuais, com gráficos e cores, que possibilitem o acompanhamento do desempenho da escola ao longo do tempo por suas pessoas gestoras. Iniciaremos a implementação de algumas consultas, com base nas solicitações que recebemos, sempre utilizando a IA da Gemini para otimizar o processo.

Objetivos da aula

Começaremos com consultas relacionadas aos cursos e suas seções.

A organização desses dados em cursos e seções é essencial para uma gestão acadêmica eficaz. Precisamos desenvolver relatórios que apresentem os cursos e suas respectivas seções, a fim de compreendermos claramente o que está sendo oferecido aos estudantes da escola.

Nossa tarefa será criar uma consulta SQL que liste todos os cursos disponíveis, juntamente com suas seções, de maneira bem estruturada. Como sempre, a IA da Gemini estará ao nosso lado nesse processo.

Listando cursos e seções

Temos um prompt, como é comum em nossos cursos.

Preciso de ajuda para criar uma consulta SQL no banco de dados da escola BitByte. A consulta deve listar todos os cursos disponíveis e suas respectivas seções. A exibição deve incluir:

- Nome do curso
- Título das seções

Os resultados devem ser organizados por curso, e as seções devem estar ordenadas pelo número.

Segue a estrutura das tabelas:

Tabela `cursos`:
- `id_curso` INT
- `nome_curso` VARCHAR(100)
- `tipo_curso` VARCHAR(100)

Tabela `secoes`:
- `id_secao` INT
- `titulo` VARCHAR(100)
- `descricao` TEXT
- `numero_secao` INT
- `id_curso` INT

Por favor, me forneça o SQL para isso.

Analisaremos o prompt e entender como ele está estruturado.

Neste momento do vídeo, o instrutor lê o prompt.

Selecionamos o prompt, copiamos com "Ctrl + C" e colamos na conversa da IA com "Ctrl + V". Podemos colar na mesma conversa do curso anterior.

Como retorno, obtemos:

O retorno abaixo foi parcialmente transcrito:

Consulta SQL para listar cursos e suas seções na BitByte

Entendendo o problema:

Queremos relacionar as tabelas cursos e seções para obter uma lista completa de cursos e suas respectivas seções, ordenadas pelo número da seção.

Solução SQL:

SELECT 
   c.nome_curso,
   s.titulo AS nome_secao
FROM 
   cursos c
INNER JOIN 
   secoes s ON c.id_curso = s.id_curso
ORDER BY 
   c.nome_curso, s.numero_secao;

Explicação:

ORDER BY: Ordena o resultado primeiro por nome_curso (em ordem alfabética) e depois por numero_secao (em ordem numérica), garantindo que as seções de cada curso sejam listadas na ordem correta.

O objetivo é relacionar as tabelas cursos e seções para obter a lista completa de cursos e suas respectivas seções. A IA nos fornece a consulta SQL e explica que ela combina todas as linhas das tabelas cursos e seções com base no campo id_curso, garantindo que apenas as seções que pertencem a um curso sejam incluídas no resultado. O comando SELECT seleciona as colunas a serem exibidas, e o ORDER BY ordena os dados primeiro pelo nome do curso e depois pelo número da seção.

Vamos copiar essa consulta clicando no ícone na parte superior direita do código e colá-la no banco de dados da escola BitByte (escolabb). Criamos um novo script selecionando o primeiro ícone na parte superior esquerda ("Create a new SQL tab for executing queries", em português, "Crie uma nova aba SQL para executar consultas") e colamos a consulta para verificar se ela funcionará sem erros:

SELECT 
    c.nome_curso,
    s.titulo AS nome_secao
FROM 
    cursos c
INNER JOIN secoes s ON c.id_curso = s.id_curso
ORDER BY c.nome_curso, s.numero_secao;

Selecionamos a consulta completa e clicamos no ícone de raio (ao colocarmos o cursor sobre esse ícone, temos a mensagem: "Execute the selected portion of the script or everything, if there is no selection", em português, "Execute a parte selecionada do script ou tudo, caso não haja nenhuma seleção.") na parte superior para executar.

É possível que a IA sugira um comando SQL que não funcione, e é por isso que discutimos a importância de ter um conhecimento prévio de MySQL para criticar o resultado da IA.

Este comando permite acessar todos os cursos e as seções correspondentes. Abaixo estão os cursos e as seções fornecidas pela escola:

A tabela abaixo foi parcialmente transcrita:

nome_cursonome_secao
Banco de Dados com MySQLIntrodução ao MySQL
Banco de Dados com MySQLModelagem de Dados
Banco de Dados com MySQLConsultas SQL
Desenvolvimento Web com HTML e CSSEstrutura HTML
Desenvolvimento Web com HTML e CSSEstilos com CSS
Desenvolvimento Web com HTML e CSSLayouts Responsivos
Estatísticas para Machine LearnFundamentos do R
Estatísticas para Machine LearnMatemática avançada
Front End para iniciantesTipos de frameworks para Javascript

Próximos passos

No próximo vídeo, abordaremos outra consulta relevante: a quantidade de estudantes matriculados por curso. Até lá!

Criando relatórios de cursos e seções - Adicionando o número de alunos matriculados

Na aula anterior, criamos uma consulta que listou os cursos disponíveis e suas respectivas seções. Essa consulta estabeleceu uma base sólida para mostrar às pessoas gestoras da escola BitByte quais cursos e seções estão disponíveis.

Agora, avançaremos para um tópico essencial: a quantidade de estudantes matriculados em cada curso. Conhecer o número de matrículas é fundamental para tomar diversas decisões estratégicas e operacionais dentro da escola. Por exemplo, é possível estimar os recursos necessários para atender à demanda de cada estudante e identificar cursos com maior ou menor adesão. Além disso, saber o número de estudantes matriculados permite planejar ações de marketing direcionadas para atrair mais pessoas interessadas.

Entretanto, a consulta anterior que foi realizada não oferece essas informações. O desafio atual, então, é adaptar a consulta SQL para incluir a contagem de estudantes matriculados em cada curso. Também será necessário filtrar essas matrículas por uma data específica, o que proporcionará uma análise mais detalhada dos dados.

Agora, voltamos à inteligência artificial para aplicar outro prompt que já temos preparado:

Adapte a consulta SQL para incluir a contagem de alunos matriculados em cada curso, considerando uma data de matrícula específica, como '2023-08-01'.

Eu quero ver:
- O nome do curso.
- O título das seções.
- A quantidade de matrículas.

Os resultados devem ser organizados por curso e suas seções.

Segue a estrutura das tabelas:

Tabela `curso`:
- `id_curso` INT
- `nome_curso` VARCHAR(100)
- `tipo_curso` VARCHAR(100)

Tabela `secoes`:
- `id_secao` INT
- `titulo` VARCHAR(100)
- `descricao` TEXT
- `numero_secao` INT
- `id_curso` INT

Tabela `matriculas`:
- `id_matricula` INT
- `id_aluno` INT
- `id_curso` INT
- `data_matricula` DATE
- `tipo_matricula` VARCHAR(20)"

O texto desse prompt é: "Adapte a consulta SQL para incluir a contagem de alunos matriculados em cada curso, considerando uma data de matrícula." Para este exemplo, estamos especificando a matrícula realizada no dia 1º de agosto de 2023. O objetivo é que, no resultado, apareça o nome do curso, o título das seções (ou seja, a mesma saída obtida na consulta anterior), mas com a quantidade de matrículas adicionada. Os resultados devem ser organizados por cursos e suas seções.

Além das tabelas curso e secoes, que já foram utilizadas no prompt anterior, estamos agora incluindo a tabela de matriculas. Nela, registramos cada matrícula realizada, associando-a a cada estudante e a cada curso.

Copiamos esse prompt e questionamos a IA se ela pode fornecer o resultado dessa consulta. Ao colarmos na mesma conversa, teclamos "Enter" para aguardar a resposta. Como retorno, obtemos:

Para adicionar a contagem de estudantes matriculados em cada seção, é necessário relacionar as tabelas matriculas com outras duas tabelas, aplicando o agrupamento e a contagem.

Consulta SQL:

SELECT 
   c.nome_curso,
   s.titulo AS nome_secao,
   COUNT(m.id_aluno) AS quantidade_matriculas
FROM 
   cursos c
INNER JOIN secoes s ON c.id_curso = s.id_curso
INNER JOIN matriculas m ON s.id_curso = m.id_curso
WHERE 
   m.data_matricula = '2023-08-01' -- Substitua pela data desejada
GROUP BY 
   c.nome_curso, s.titulo
ORDER BY 
   c.nome_curso, s.numero_secao;

Explicação:

Realizamos um join triplo entre as tabelas secoes, matriculas e cursos. O filtro será feito pela data de matrícula, uma vez que desejamos visualizar apenas as matrículas realizadas no dia 1 de agosto de 2023. Aplicaremos o GROUP BY, pois no SELECT estaremos contando o número de estudantes matriculados e apresentando-os, ordenados por curso e por seção.

Agora, copiaremos essa consulta, retornaremos ao MySQL, criaremos um novo script e colaremos a consulta. Ao executar, o erro foi apresentado (o erro apresentado foi parcialmente transcrito):

Error Code: 1055. Expression #2 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'escolabb.s.numerosecao' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sqlmode=onlyfullgroupby

Primeiramente, verificaremos os nomes das tabelas, especialmente a tabela cursos. O erro indicou que as expressões ORDER BY e GROUP BY estavam configuradas de forma incorreta. Talvez seja necessário remover a expressão ORDER BY. Organizaremos a consulta, removeremos a expressão ORDER BY e verificaremos se o resultado será exibido corretamente.

SELECT 
    c.nome_curso,
    s.titulo AS nome_secao,
    COUNT(m.id_aluno) AS quantidade_matriculas
FROM 
    cursos c
INNER JOIN 
    secoes s ON c.id_curso = s.id_curso
INNER JOIN 
    matriculas m ON s.id_curso = m.id_curso
WHERE 
    m.data_matricula = '2023-08-01' -- Substitua pela data desejada
GROUP BY 
    c.nome_curso, s.titulo, s.numero_secao

Tabela parcialmente transcrita:

nome_cursonome_secaoquantidade_matriculas
Banco de Dados com MySQLIntrodução ao MySQL20
Banco de Dados com MySQLModelagem de Dados20
Banco de Dados com MySQLConsultas SQL20
Desenvolvimento Web com HTML e CSSEstrutura HTML13
Desenvolvimento Web com HTML e CSSEstilos com CSS13
Desenvolvimento Web com HTML e CSSLayouts Responsivos13

Agora, conseguimos obter a informação sobre o curso "Banco de Dados com MySQL", o nome da seção e a quantidade de matrículas. É importante notar que esses dados se repetem, pois a matrícula é realizada por curso. Como o curso possui diversas seções, o número de matrículas se repete, o que não constitui um problema. Isso indica que temos 20 estudantes matriculados no curso "Banco de Dados com MySQL" para as matrículas do dia 1º de agosto de 2023. Além disso, temos 13 estudantes no curso "Desenvolvimento Web", 9 no curso "Introdução à Programação" e assim por diante.

Com essa consulta, obtemos uma visão consolidada dos cursos, suas seções e o número de estudantes matriculados em uma data específica.

Próximos passos

A partir daqui, ampliaremos ainda mais a análise. Compararemos as matrículas de duas datas distintas para avaliar se houve crescimento ou queda no número de estudantes matriculados ao longo do tempo. Isso será feito com o auxílio da inteligência artificial. Esse passo será abordado no próximo vídeo. Até mais!

Sobre o curso MySQL com IA: trabalhando com consultas e relatórios

O curso MySQL com IA: trabalhando com consultas e relatórios possui 153 minutos de vídeos, em um total de 51 atividades. Gostou? Conheça nossos outros cursos de IA para Dados em Inteligência Artificial, ou leia nossos artigos de Inteligência Artificial.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda IA para Dados acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas