Fiscal - Estadual (ICMS)

A Linguagem SQL para a SEFAZ ES: Ordenação, Agrupamento e Junções

Confira neste artigo um resumo sobre a Linguagem SQL para o concurso da SEFAZ ES.

Linguagem SQL

Olá, pessoal! Tudo bem com vocês?

O tão aguardado edital do concurso da Secretaria de Estado da Fazenda do Espírito Santo (SEFAZ ES), para o cargo de Auditor Fiscal, finalmente foi publicado.

A temida banca FGV é a organizadora deste certame. Ele está oferecendo 150 vagas para este cargo, com remuneração inicial de R$ 12.492,19. Nada mal, não é mesmo?

A disciplina de Tecnologia da Informação veio bastante pesada, com tópicos que não são tão comuns de serem cobrados na área fiscal. Desse modo, no artigo de hoje, o intuito é realizar um estudo sobre um assunto muito importante desta disciplina e que certamente estará na sua prova da SEFAZ ES, a Linguagem SQL.

Este já é o nosso segundo e último artigo sobre este tema. Desse modo, dividiremos a nossa análise nos seguintes tópicos:

  • Ordenação;
  • Agregação;
  • Agrupamento;
  • Junções.

Ordenação

No artigo anterior, aprendemos sobre os comandos SELECT e WHERE. Neste, iremos dar continuidade sobre este assunto, introduzindo outros comandos de consulta da Linguagem SQL para a SEFAZ ES.

Quando pesquisamos informações em banco de dados, há situações em que é interessante que os resultados da consulta sejam ordenados, de acordo com certo atributo escolhido previamente. Por exemplo, na tabela abaixo, é possível que uma consulta seja ordenada de modo crescente dos valores das notas, ou pela ordem alfabética dos nomes dos alunos. Para isso, pode ser utilizado o comando ORDER BY.

Como no artigo anterior, vamos utilizar novamente a tabela abaixo como referência para os exemplos deste artigo.

Tabela Aluno

A sintaxe do ORDER BY pode ser visualizada abaixo:

SELECT coluna1, coluna2, …

FROM nome_tabela

WHERE condição

ORDER BY coluna ASC/DESC

Perceba que pode ser usado ASC, para a ordem crescente, ou DESC, para a ordem decrescente.

Por exemplo, vamos supor que queremos que os registros de todas as linhas, em que a disciplina não é História, sejam ordenados pelo valor da nota do aluno, de maneira crescente. Assim, o comando a ser utilizado será:

SELECT *

FROM Aluno

WHERE NOT disciplina=’História’

ORDER BY nota ASC

De acordo com as fórmulas acima, serão selecionados e apresentados os registros da tabela Aluno, os quais não possuem como disciplina a História, sendo que eles serão ordenados de acordo com o valor da nota, em ordem crescente.

Desse modo, teremos a seguinte tabela abaixo:

Ordenação GROUP BY

Perceba que todos os registros, exceto aqueles em que a disciplina é História, foram organizados em ordem crescente de nota e retornados ao usuário.

Quando a ordenação exigida é por ordem alfabética, usa-se a mesma sintaxe. Desse modo, caso queira que a consulta seja organizada pela ordem alfabética dos alunos, teremos a seguinte fórmula e tabela resultante:

SELECT *

FROM Aluno

WHERE NOT disciplina=’História’

ORDER BY nome_aluno ASC

De acordo com comandos acima, serão selecionados e apresentados os registros da tabela Aluno, os quais não possuem como disciplina a História, sendo que eles serão ordenados alfabeticamente (crescente), de acordo com o nome do aluno.

Ordenação ORDER BY

FIQUE SABENDO: Quando for necessária uma consulta de acordo com a ordem crescente, o comando ASC pode ser suprimido. Já quando a consulta for em ordem decrescente, é obrigatório a presença do comando DESC.

Agregação

Antes de estudarmos as funções de agrupamento, é importante aprendermos as agregações.

As funções de agregação são utilizadas quando são solicitadas informações resumidas entre os diferentes registros. Por exemplo, elas são utilizadas para encontrar o valor máximo ou mínimo de um atributo. As principais funções de agregação do SQL são MAX (máximo), MIN (mínimo), SUM (somatório), AVG (média) e COUNT (contador).

A sua sintaxe é:
SELECT FUNCAO(coluna1)

FROM nome_tabela

WHERE condição

Perceba que, neste caso, a função é inserida logo após o comando SELECT, já que será retornado apenas o resultado da função inserida.

Novamente, vamos recorrer a um exemplo para entender a agregação.

Vamos supor que o usuário queira a menor nota entre os alunos que cursam a disciplina de Física. Desse modo, a função será:

SELECT MIN(nota)

FROM Aluno

WHERE disciplina=’Física’

Na tabela, temos duas notas para a disciplina de Física, 8 e 9. Assim, o seguinte resultado será retornado:

Agregação MIN

Simples, não é? Vamos para a próxima.

Vamos realizar agora uma consulta para contar a quantidade de notas de Física presentes na tabela:

SELECT COUNT(nota)

FROM Aluno

WHERE disciplina=’Física’

A função COUNT permite realizar a contagem de registros de acordo com a condição imposta. Assim, ela irá contar o número de notas em que a disciplina corresponde a Física.

Como há duas notas da disciplina de Física na tabela, teremos como resultado da consulta a tabela abaixo:

Agregação COUNT

De maneira similar, podemos encontrar a média (AVG), o valor máximo (MAX) e o somatório (SUM) das notas.

Vamos para o próximo tópico.

Agrupamento

Agora que vocês já sabem como realizar agregações através de comandos do SQL, podemos avançar para o tópico de Agrupamentos.

É possível que alguns valores de atributos sejam agrupados em relação a um outro atributo. Por exemplo, é possível que saibamos quantas disciplinas são cursadas por cada aluno. Para isto, utilizamos a função GROUP BY, geralmente com as funções de agregação já estudadas.

Para utilizar o GROUP BY, utilizamos a seguinte sintaxe:

SELECT coluna1 FUNÇÃO (coluna2)

FROM nome_tabela

WHERE condição

GROUP BY coluna1

Dito isto, vamos ver como ficaria a fórmula para sabermos quantas disciplinas são cursadas por cada diferente aluno:

SELECT nome_aluno COUNT(disciplina)

FROM Aluno

GROUP BY nome_aluno

Desse modo, o comando COUNT irá contar a quantidade de disciplinas e agrupar estes números de acordo com o nome do aluno. Assim, a seguinte tabela abaixo será retornada:

Agrupamento GROUP BY

Existe outro comando que é muito utilizado em agrupamentos com o GROUP BY, é o chamado HAVING.

Ele é utilizado para incluir alguma outra condição que porventura possa ser exigida para realizar o agrupamento. A nova sintaxe, utilizando o HAVING, seria:

SELECT coluna1 FUNÇÃO (coluna2)

FROM nome_tabela

WHERE condição

GROUP BY coluna1

HAVING condição

Por exemplo, vamos supor, novamente, que queiramos saber quantas disciplinas cada aluno cursa, entretanto, apenas queremos aqueles alunos que possuam duas disciplinas ou mais associadas. Desse modo, utilizamos a seguinte fórmula:

SELECT nome_aluno COUNT(disciplina)

FROM Aluno

GROUP BY nome_aluno

HAVING COUNT(disciplina) >= 2

Agora, o comando COUNT irá contar o número de disciplinas, agrupar estes números de acordo com o nome do aluno, mas apenas irá retornar aqueles valores em que a quantidade de disciplinas contadas for maior do que 2.

Desse modo, teríamos apenas os seguintes resultados:

Agrupamento GROUP BY HAVING

Muito bacana, não é?

Junções (JOINS)

Finalizando este artigo sobre a Linguagem SQL para o concurso da SEFAZ ES, trataremos das Junções (JOINS).

As JOINS são utilizadas para combinar duas ou mais tabelas. Elas podem ser realizadas, geralmente, de algumas maneiras:

INNER JOIN

O INNER JOIN, ou apenas JOIN, é utilizado para retornar os valores coincidentes em ambas as tabelas, ou seja, são as intersecções entre elas. A sua sintaxe é a apresentada abaixo:

SELECT colunas

FROM tabela1

JOIN tabela2 ON tabela1.coluna = tabela2.coluna

Entretanto, caso as colunas a serem analisadas de cada tabela possuam nomes iguais, podemos utilizar a seguinte fórmula, em substituição à última linha acima:

INNER JOIN tabela2 USING (coluna);

Vamos utilizar as seguintes tabelas abaixo para exemplificar este assunto:

Tabelas para o JOIN

A primeira tabela é formada pelos alunos e seus respectivos números de matrícula. A segunda relaciona as notas das disciplinas com os números de matrícula de cada estudante. Dessa maneira, é possível criar uma nova tabela de todos os estudantes que possuam nota em alguma disciplina, ou seja, iremos criar uma tabela através dos registros que são iguais entre as colunas matrícula_aluno das duas tabelas. Para isso, podemos utilizar a seguinte fórmula:

SELECT *

FROM Aluno

JOIN Notas ON aluno.matrícula_aluno = notas.matrícula_aluno

Assim, a tabela abaixo será retornada, através da junção das duas tabelas acima, em que há coincidência entre os números de matrícula nas duas tabelas:

JOIN

Perceba que o aluno Marcos, da tabela 1, de matrícula 555, bem como o registro 777 da disciplina de Matemática, da tabela 2, não apareceram acima, já que não possuem correspondência nas tabelas vizinhas.

LEFT JOIN

O LEFT JOIN, por sua vez, irá retornar todos os elementos da tabela da esquerda, bem como aqueles da tabela da direita que possuem correspondência. Caso haja algum registro da tabela da esquerda sem correspondência com a da direita, o valor NULL será apresentado. Observe abaixo um exemplo similar ao de cima, mas utilizando o LEFT JOIN:

SELECT *

FROM Aluno

LEFT JOIN Notas ON aluno.matrícula_aluno = notas.matrícula_aluno

A seguinte tabela será apresentada:

LEFT JOIN

Dessa maneira, diferentemente do INNER JOIN, todos os elementos da tabela da esquerda foram exibidos. Entretanto, o 555 não possui correspondência com a tabela da direita, sendo os seus campos preenchidos com NULL.

RIGHT JOIN

O RIGHT JOIN é bastante similar ou LEFT JOIN, entretanto, a tabela da direita que terá todos os seus elementos exibidos, enquanto o que a tabela da esquerda terá apenas aqueles que possuírem correspondência com os elementos da tabela da direita. Além disso, caso haja algum registro da tabela da direita sem correspondência com a da esquerda, o valor NULL será apresentado. Observe abaixo um exemplo similar ao de cima, mas utilizando o RIGHT JOIN:

SELECT *

FROM Aluno

RIGHT JOIN Notas ON aluno.matrícula_aluno = notas.matrícula_aluno

RIGHT JOIN

Como o 777 não possui correspondência com a tabela da esquerda, seus campos foram preenchidos com NULL.

FULL OUTER JOIN

SELECT *

FROM Aluno

FULL OUTER JOIN Notas ON aluno.matrícula_aluno = notas.matrícula_aluno

Este comando retorna a junção de todos os valores das duas tabelas, relacionando os relacionáveis e deixando com valor NULL aqueles campos que não possuem relação. Dessa maneira, ficaria assim a tabela resultante:

FULL OUTER JOIN

Finalizando

Pessoal, chegamos ao fim do nosso segundo artigo sobre a Linguagem SQL para o concurso da SEFAZ ES.

Procuramos identificar os principais tópicos e que possuem uma maior chance de serem cobrados.

Caso queira se preparar para chegar competitivo nesta prova, invista nos cursos para a SEFAZ ES do Estratégia Concursos. Lá você encontrará aulas completas e detalhadas, com os melhores professores do mercado.

Conheça também o Sistema de Questões do Estratégia. Afinal, a única maneira de consolidar o conteúdo de maneira satisfatória é através da resolução de questões.

Bons estudos e até a próxima.

Cursos e Assinaturas

Prepare-se com o melhor material e com quem mais aprova em Concursos Públicos em todo o país!

Assinatura de Concursos

Assinatura de 1 ano ou 2 anos

Sistema de Questões

Assinatura de 1 ano ou 2 anos

Concursos Abertos

mais de 15 mil vagas

Concursos 2021

mais de 17 mil vagas

Kassio Henrique Sobral Rocha

Posts recentes

Transtorno de Personalidade Esquizotípica para Psicólogo PC-DF

Neste artigo você encontrará um resumo do Transtorno de Personalidade Esquizotípica, pertencente ao tópico de…

2 horas atrás

Funções Essenciais à Justiça para o STM

Olá, pessoal, tudo bem? As funções essenciais à justiça estarão em pauta hoje no nosso…

2 horas atrás

Concurso EBSERH: quais são os hospitais de lotação?

Confira quais são os hospitais de lotação! Iniciais de até R$ 17,9 mil! O edital…

4 horas atrás

Transtorno de Personalidade Evitativa para Psicólogo da PC-DF

Neste artigo você encontrará um resumo do Transtorno de Personalidade Evitativa, pertencente ao tópico de…

5 horas atrás

Controle de Constitucionalidade para o MPU

Olá, pessoal, tudo bem? Hoje vamos falar sobre controle de constitucionalidade. Dada a proximidade da…

6 horas atrás

Concurso PM SP: são 2.700 vagas. Último dia de inscrição!

Atenção, concurseiros! Neste domingo, 22 de dezembro, encerra o prazo para garantir sua inscrição no concurso…

6 horas atrás