Definição
Consultas com expressões no comando SELECT. Consultas com o uso da cláusula WHERE. Agrupamento de dados.
PROPÓSITO
Saber construir comandos SQL com o uso de expressões no comando SELECT, bem como a especificação de condições na cláusula WHERE, que representam tarefas importantes no projeto de consultas em sistemas gerenciadores de banco de dados (SGBD). Para o desenvolvimento de relatórios e consultas analíticas, é fundamental saber trabalhar com agrupamento de dados. Essas atividades são relacionadas ao dia a dia de programadores, analistas de sistemas e desenvolvedores.
Preparação
Antes de iniciar o conteúdo deste tema, certifique-se de ter baixado e instalado o SGBD PostgreSQL em seu computador.
OBJETIVOS
Módulo 1
Operar consultas com o comando SELECT
Módulo 2
Operar consultas usando a cláusula WHERE
Módulo 3
Operar consultas envolvendo agrupamento de dados
Introdução
Ao longo deste tema, vamos explorar diversos exemplos de consultas envolvendo uma tabela. Aprenderemos a codificar consultas abrangendo tanto a recuperação de colunas da própria tabela quanto o uso de expressões no comando SELECT. Quando projetamos um banco de dados para determinado domínio de negócio, em geral, são criadas diversas tabelas que serão manipuladas pelas aplicações desenvolvidas para acessar os recursos do banco de dados.
Diversas operações que manipulam tabelas em um banco de dados necessariamente estão associadas a alguma operação de consulta. Por exemplo, se resolvermos aumentar em 10% o salário de todos os funcionários que ganham até R$ 4.000, será necessário programarmos um comando de consulta para que o sistema gerenciador de banco de dados (SGBD) selecione os registros dos funcionários alvo da atualização. Assim, aprender de maneira efetiva a programar consultas trará benefícios, tanto para atividades de construção de relatórios, quanto para o projeto de operações de remoção e atualização de dados.
Clique aqui para baixar o arquivo com todos os códigos que serão utilizados nas consultas dos módulos a seguir.
MÓDULO 1
Operar consultas com o comando SELECT
Estrutura básica de um comando SELECT
O comando SELECT é usado para exibir dados resultantes de uma consulta. Os dados podem ser colunas físicas de uma tabela, colunas calculadas ou mesmo resultado do uso de expressões e funções. Uma sintaxe básica para o comando SELECT está expressa a seguir:
SELECT COLUNA1 [[AS] APELIDOCOLUNA1],COLUNA2 [[AS] APELIDOCOLUNA2],…COLUNAN [[AS] APELIDOCOLUNAN]FROM TABELA;É importante ressaltar que estamos diante de uma sintaxe simplificada o suficiente para entendimento dos exemplos que iremos explorar ao longo do módulo. A sintaxe completa abrange todos os recursos do PostgreSQL.
Uma sintaxe complexa envolve uma série de cláusulas e recursos bastante úteis para consultas de maior complexidade.
Na prática, o comando SELECT, dependendo da consulta desejada, pode ser usado de diferentes formas para obter o mesmo resultado. É importante frisar que a cláusula SELECT realiza a operação de projeção da Álgebra Relacional.
Caso haja interesse em exibir todas as colunas especificadas em uma consulta, basta adicionar um “*”, conforme a seguir: SELECT * FROM TABELA;
Você sabia
Alguns SGBDs, como o PostgreSQL, implementam uma forma simplificada do comando SELECT * FROM TABELA, que é simplesmente TABLE tabela (você pode testar isso no PostgreSQL).
Vamos estudar alguns exemplos?
Construiremos as consultas com base na tabela ALUNO, conforme figura a seguir:
Recomendamos que você crie a tabela e insira algumas linhas, o que pode ser feito usando o script a seguir, a partir da ferramenta de sua preferência.
Para isso, tenha em mente que é necessário estar conectado ao PostgreSQL e acessando algum database criado por você.
Vamos ver alguns exemplos de consultas?
Exibir todas as informações dos alunos.
SELECT * FROM ALUNO;
A tabela a seguir apresenta os resultados da consulta.
Ao executar a consulta, o SGBD percorre todos os registros da tabela ALUNO e exibe as colunas dessa tabela.
Retornar o código, o nome e a data de nascimento de todos os alunos.
SELECT CODIGOALUNO, NOME, DTNASCIMENTO
FROM ALUNO;
Na consulta 02, foram especificadas três colunas da tabela ALUNO para serem exibidas ao usuário.
Em especial, pode ser interessante “renomear” as colunas resultantes da consulta, visando tornar os resultados mais “apresentáveis” ao usuário da aplicação. Por exemplo, a consulta 02 pode ser reescrita conforme a seguir:
SELECT CODIGOALUNO AS "Matrícula",NOME AS "Nome do discente",DTNASCIMENTO AS "Data de nascimento"FROM ALUNO;,O resultado dessa consulta seria este:
É importante ressaltar que, na tabela anterior, o nome apresentado para cada coluna não existe fisicamente no banco de dados.
Vamos aprender a seguir que nem toda coluna resultante de uma consulta representa necessariamente uma coluna de alguma tabela.
Funções de data e hora
Quando desenvolvemos consultas, é comum manipularmos colunas e funções que envolvem dados representativos de datas.
| Um resumo contendo algumas funções de data do PostgreSQL pode ser visualizado na tabela a seguir: | |
|---|---|
| Função | O que retorna? |
| current_date | data de hoje |
| current_time | hora do dia |
| current_timestamp | data e a hora |
| extract (campo from fonte) | subcampos de data e hora: século, ano, dia, mês |
Um quadro completo contendo informações sobre funções de data e hora pode ser encontrado na documentação oficial do PostgreSQL.
Vamos estudar alguns exemplos?
Observe com atenção o código:
Agora veja na tabela a seguir os resultados da consulta:
Observe que utilizamos o qualificador AS “Apelido” para facilitar o entendimento do retorno de cada função. Note também que não há cláusula FROM na consulta, visto que todas as colunas retornadas representam o resultado de funções do PostgreSQL sem envolver qualquer tabela do domínio da aplicação.
Atenção
Convém ressaltar que, no padrão SQL, a cláusula FROM é obrigatória. No entanto, o PostgreSQL permite executar um comando SELECT sem a cláusula FROM. Experimente executar SELECT 5+5;
Exibindo o nome do dia da semana
Perceba que a linha 6 do código acima retorna um inteiro representativo do dia da semana. No entanto, se houver necessidade de exibir o dia da semana, você pode usar o código a seguir:
Observe que construímos uma lógica utilizando o comando CASE, que é equivalente ao comando IF:, cada linha com a cláusula WHEN avalia expressão que retorna um inteiro representativo do dia da semana, caso a expressão tenha valor lógico verdadeiro.
Calculando idade e faixa etária
Em geral, quando estamos diante de alguma coluna representativa da data de nascimento de uma pessoa, é comum extrair informações derivadas, tais como idade e faixa etária. Por exemplo, o código a seguir retorna o nome, a data de nascimento e a idade dos alunos:
Perceba que na linha 3 utilizamos a função AGE, que retorna uma frase representativa da informação sobre a idade em questão. Na linha 4, usamos a função EXTRACT para exibir a idade do aluno. A figura a seguir apresenta o resultado dessa consulta:
Muito bem, agora, vamos exibir o nome, a idade e a faixa etária dos alunos.
Observe o código SQL a seguir:
Perceba que cada linha com a cláusula WHEN avalia a expressão que retorna uma faixa etária de acordo com a idade do aluno.
A seguir, o resultado da consulta:
Funções de resumo ou de agregação
As funções a seguir são úteis para obtermos resumo dos dados de alguma tabela:
| Função | O que retorna? |
| COUNT(*) | número de linhas da consulta |
| MIN(COLUNA/EXPRESSÃO) | menor de uma coluna ou expressão |
| AVG(COLUNA/EXPRESSÃO) | valor médio da coluna ou expressão |
| MAX(COLUNA/EXPRESSÃO) | maior valor de uma coluna ou expressão |
| SUM(COLUNA/EXPRESSÃO) | soma dos valores de uma coluna ou expressão |
| STDDEV(COLUNA/EXPRESSÃO) | desvio padrão dos valores de uma coluna ou expressão |
| VARIANCE(COLUNA/EXPRESSÃO) | variância dos valores de uma coluna ou expressão |
Vamos estudar um exemplo?
Observe o código a seguir:
Perceba que, como estamos usando somente o comando SELECT/FROM, cada função é calculada levando em consideração todos os registros da tabela.
Veja na figura a seguir, o resultado da consulta:
Atenção
Perceba, também, que o código da linha 6 é equivalente ao da linha 4: ambos calculam a idade média dos alunos.
Listando resumos em uma linha
Suponha que haja interesse em conhecer os quantitativos de cursos, disciplinas e alunos do nosso banco de dados.
Poderíamos submeter ao SGBD as consultas a seguir:
SELECT COUNT(*) NCURSOS FROM CURSO;
SELECT COUNT(*) NDISCIPINAS FROM DISCIPLINA;
SELECT COUNT(*) NALUNOS FROM ALUNO;
Estamos diante de três consultas. No entanto, pode ser mais interessante mostrarmos os resultados em apenas uma linha.
Podemos, então, submeter o código a seguir:
O que fizemos?
Como cada consulta (linhas 2 a 4) retorna somente um valor, utilizamos um SELECT externo (linha 1) para exibir cada coluna resultante.
Observe o resultado a seguir:
Convém ressaltar que o comando é válido, visto que, no PostgreSQL, a cláusula FROM não é obrigatória.
Criando tabela a partir de consulta
Em alguns momentos, você terá interesse em salvar os resultados de uma consulta em uma nova tabela.
Para isso, basta usar o comando CREATE TABLE <CONSULTA>.
No exemplo apresentado, o SGBD criará uma tabela denominada TTESTE e armazenará os dados resultantes da consulta (linhas 2 a 11) em questão.
Criando view a partir de consulta
Outro recurso interessante, diretamente relacionado ao processo de construção de consultas, é o objeto view (visão). Uma view encapsula a complexidade da consulta SQL, que a forma. Para criar esse objeto, usa-se o comando CREATE VIEW <CONSULTA>.
No exemplo, o SGBD criará uma view denominada VTESTE. Na prática, quando usuário submeter, por exemplo, a consulta SELECT * FROM VTESTE, o SGBD executará o código associado à view em questão.
Atenção: Antes de assistir o vídeo a seguir realizar o download do arquivo EMPRESA.SQL e criar o banco de dados utilizando o PGADMIN.
Consultas com o comando SELECT utilizando PGADMIN, incluindo criação de tabela e VIEW
Veja agora o vídeo sobre Criação de tabela e view a partir de consulta
Consultas com o comando select utilizando PLSQL
Veja agora o vídeo sobre Consultas simples com o comando SELECT no PostgreSQL
Ao longo da nossa jornada, estudamos a construção de consultas envolvendo a extração de informação a partir de uma tabela. Além disso, foram exibidas funções de data e funções para resumir dados de uma tabela.
Agora é com você! Vamos realizar as atividades a seguir?
Verificando o aprendizado
ATENÇÃO!
Para desbloquear o próximo módulo, é necessário que você responda corretamente a uma das seguintes questões:
O conteúdo ainda não acabou.
Clique aqui e retorne para saber como desbloquear.
MÓDULO 2
Operar consultas usando a cláusula WHERE
Cláusula WHERE e operadores da SQL
Em nossas consultas, usaremos como base a tabela ALUNO, conforme figura a seguir:
Recomendamos que você crie a tabela e insira algumas linhas, o que pode ser feito usando o script a seguir, a partir da ferramenta de sua preferência. Para isso, tenha em mente que é necessário estar conectado ao PostgreSQL e acessando algum database criado por você.
Recuperando dados com SELECT/FROM/WHERE/ORDER BY
Uma sintaxe básica para o comando SELECT, com o uso das cláusulas WHERE e ORDER BY, está expressa a seguir:
SELECT COLUNA1 [[AS] APELIDOCOLUNA1],COLUNA2 [[AS] APELIDOCOLUNA2],…COLUNAN [[AS] APELIDOCOLUNAN]FROM TABELAWHERE <CONDIÇÃO>ORDER BY EXPRESSÃO1[ASC|DESC] [NULLS {FIRST|LAST}], [EXPRESSÃO2[ASC|DESC] [NULLS {FIRST|LAST}…];O propósito do SELECT é declararmos as colunas da consulta. No FROM, informamos a tabela alvo da consulta. No WHERE, especificamos alguma condição, simples ou composta, para filtrar registros que serão recuperados pelo SGBD. No ORDER BY, declaramos uma ou mais colunas como critério de ordenação, com possibilidade de especificarmos se valores NULL aparecem no início ou no final do resultado.
É importante frisar que a cláusula WHERE realiza a operação de restrição da Álgebra Relacional, também conhecida como seleção – não confundir com o comando SELECT.
Ainda, a construção de uma condição na cláusula WHERE envolve operadores relacionais, conforme tabela a seguir:
| Operador | Significado |
|---|---|
| < | menor |
| <= | menor ou igual a |
| > | maior |
| >= | maior ou igual a |
| = | igual |
| <> ou != | > diferente |
Além dos operadores relacionais, a construção de uma condição na cláusula WHERE pode fazer uso dos seguintes operadores lógicos:
| Operador | Significado |
|---|---|
| AND | conjunção |
| OR | disjunção |
| NOT | negação |
Vamos estudar alguns exemplos de consultas com o uso da cláusula WHERE?
Mostrar o nome e a data de nascimento das professoras.
Perceba que foi criada uma condição simples de igualdade envolvendo a coluna SEXO da tabela ALUNO. O SGBD percorre cada registro da tabela ALUNO, avalia a condição (linha 3) e exibe as colunas NOME e DTNASCIMENTO para cada registro cuja avaliação da condição retorne verdadeiro.
Mostrar o nome e a data de nascimento das professoras que fazem aniversário em novembro.
Perceba que foi criada uma condição composta envolvendo uma conjunção. O SGBD retornará os registros que possuem o valor “F” para a coluna SEXO e o inteiro 11 como valor do mês referente à data de nascimento.
Recuperando dados com o uso do operador IN
O operador [NOT] IN pode ser utilizado em consultas que envolvam comparações usando uma lista de valores.
Listar o nome dos alunos que fazem aniversário no segundo semestre.
Note que a expressão na cláusula WHERE compara o mês de nascimento de cada aluno junto aos valores da lista contendo os inteiros correspondentes aos meses do segundo semestre.
Recuperando dados com o uso do operador BETWEEN
O operador [NOT] BETWEEN verifica se determinado valor encontra-se no intervalo entre dois valores.
Por exemplo, X BETWEEN Y AND Z é equivalente a X>=Y AND X<=Z. De modo semelhante, X NOT BETWEEN Y AND Z é equivalente a X<Y OR X>Z.
Listar o nome dos alunos nascidos entre 1985 e 2005.
Note que a expressão na cláusula WHERE compara o ano de nascimento de cada aluno junto ao intervalo especificado pelo operador BETWEEN. Caso quiséssemos extrair o mesmo resultado sem o uso do BETWEEN, poderíamos programar um comando equivalente, conforme a seguir:
Recuperando dados com o uso do operador LIKE
O uso do [NOT] LIKE permite realizar buscas em uma cadeia de caracteres.
Trata-se de um recurso bastante utilizado em buscas textuais. Você pode utilizar os símbolos especiais a seguir:
Vamos estudar alguns exemplos?
Listar o nome dos alunos que possuem a string COSTA em qualquer parte do nome.
Saiba mais
O uso do padrão ‘%COSTA%’ significa que não importa o conteúdo localizado antes e depois da string “COSTA”.
Listar o nome dos alunos que possuem a letra “A” na segunda posição do nome.
Note que, para especificar o “A” na segunda posição, o SGBD desprezará qualquer valor na primeira posição da string, não importando o que estiver localizado à direita do “A”.
Listar o nome e a data de nascimento dos alunos que não possuem a string “MARIA” fazendo parte do nome.
Estamos diante de um caso semelhante ao da consulta 05.
No entanto, utilizamos o operador de negação para retornar os registros de interesse.
Quantos alunos possuem conta de e-mail no gmail?
Note que, mais uma vez, estamos diante de um caso semelhante ao da consulta 05. Buscamos pela string “@GMAIL. ” em qualquer posição da coluna EMAIL.
Recuperando dados com o uso do operador NULL
Quando uma coluna é opcional, significa que existe possibilidade de que algum registro não possua valor cadastrado para a coluna em questão. Nessa hipótese, há entendimento de que o valor da coluna é “desconhecido” ou “não aplicável”.
Para testar se uma coluna possui valor cadastrado, usa-se a expressão COLUNA IS NOT NULL.
Vamos estudar alguns exemplos?
Listar o nome, a data de nascimento e o e-mail dos alunos que têm endereço eletrônico cadastrado.
O SGBD retorna os registros onde há algum conteúdo cadastrado na coluna EMAIL.
Retornar o nome dos alunos sem e-mail cadastrado no banco de dados.
O SGBD retorna os registros sobre os quais não há valor cadastrado na coluna EMAIL.
Recuperando dados usando ordenação dos resultados
Para melhor organizar os resultados de uma consulta, nós podemos especificar critérios de ordenação. Vejamos alguns exemplos:
Retornar o nome e a data de nascimento dos alunos, ordenando os resultados por nome, de maneira ascendente.
O SGBD retorna os registros da tabela ALUNO, obedecendo ao critério de ordenação especificado na linha 3 da consulta. O padrão ascendente (ASC) é opcional.
Retornar o nome e a data de nascimento dos alunos, ordenando os resultados de modo ascendente pelo mês de nascimento e, em seguida, pelo nome, também de modo ascendente.
O SGBD retorna os registros da tabela ALUNO, levando em conta o critério de ordenação especificado na linha 3 da consulta. Foi realizada ordenação pelo mês de nascimento; em seguida, pelo nome.
Consultas com o comando SELECT e a cláusula WHERE utilizando PGADMIN
A seguir, veja o vídeo: Estudos de casos com o comando SELECT e a cláusula WHERE
Consultas com o comando SELECT e a cláusula WHERE utilizando PLSQL
A seguir, veja o vídeo: Consultas com o comando SELECT e a cláusula WHERE
Trabalhamos o uso de consultas com auxílio da cláusula WHERE, fazendo uso de operadores relacionais e lógicos na composição de condições lógicas. Além disso, estudamos como estabelecer critérios para ordenação dos resultados de consultas.
Agora é com você! Vamos realizar as atividades a seguir?
Verificando o aprendizado
ATENÇÃO!
Para desbloquear o próximo módulo, é necessário que você responda corretamente a uma das seguintes questões:
O conteúdo ainda não acabou.
Clique aqui e retorne para saber como desbloquear.
MÓDULO 3
Operar consultas envolvendo agrupamento de dados
Consultas com GROUP BY e HAVING
Em nossas consultas, usaremos como base a tabela FUNCIONARIO, conforme figura a seguir:
Recomendamos que você crie a tabela e insira algumas linhas, o que pode ser feito usando o script a seguir, a partir da ferramenta de sua preferência. Para isso, tenha em mente que é necessário estar conectado ao PostgreSQL e acessando algum database criado por você.
Após a criação da tabela e a inserção dos registros, podemos utilizar o código a seguir para exibir todo o seu conteúdo:
O resultado da consulta será semelhante a este:
Grupo de dados
Nas próximas seções, vamos aprender a projetar consultas com o uso de agrupamento de dados, com auxílio dos comandos GROUP BY e HAVING.
Vamos perceber que a maior parte dessas consultas está atrelada ao uso de alguma função de resumo, por exemplo, SUM, AVG, MIN e MAX, as quais representam, respectivamente, soma, média, mínimo e máximo.
Logo, essas consultas são úteis para quem tem interesse em construir relatórios e aplicações de natureza mais gerencial e analítica. Os valores de determinada coluna podem formar grupos sobre os quais podemos ter interesse em recuperar dados.
Por exemplo, se avaliarmos o resultado da consulta anterior, podemos naturalmente dividir os registros de acordo com o valor da coluna sexo. Teríamos, então, uma estrutura conforme a seguir:
| M {4,5} {MARCOS PEREIRA BRASIL, HEMERSON SILVA BRASIL} {…} |
| F {1,2,3} {ROBERTA SILVA BRASIL, MARIA SILVA BRASIL, GABRIELLA PEREIRA LIMA} {…} |
Saiba mais
Todas as linhas com o mesmo valor para a coluna sexo formam um grupo. Representamos as linhas com mais de um valor com o uso de chaves para fins ilustrativos, dado que estamos diante de linhas dentro de colunas, uma representação que não existe no modelo relacional.
A estrutura anterior possui somente um grupo, o qual é formado pela coluna SEXO da tabela FUNCIONARIO. Como exibir esse grupo em SQL?
Uma solução é adicionar a cláusula DISTINCT ao comando SELECT, conforme a seguir:
O resultado da consulta anterior pode ser visualizado na figura a seguir:
Vamos perceber que em SQL a cláusula mais adequada para trabalhar com agrupamento de dados é o GROUP BY.
Grupo de dados com GROUP BY
A cláusula GROUP BY serve para exibir resultados de consulta de acordo com um grupo especificado. Ela é declarada após a cláusula FROM, ou após a cláusula WHERE, caso exista na consulta. Por exemplo, para obter o mesmo resultado do comando anterior, podemos usar o código a seguir:
No entanto, vamos perceber que o uso mais conhecido da cláusula GROUP BY ocorre quando associada a funções de agregação, tais como COUNT, MIN, MAX e AVG.
Uma tabela com o nome e o significado dessas funções foi apresentada na seção “Funções de resumo ou agregação” no módulo 1.
Vamos estudar alguns exemplos?
Retornar o número de funcionários por sexo.
O SGBD realiza o agrupamento de dados de acordo com os valores da coluna SEXO. Em seguida, para cada grupo encontrado, a função COUNT(*) é executada e o resultado exibido.
E se tivéssemos interesse em exibir os resultados da consulta anterior em uma única linha? Poderíamos usar o código a seguir:
Retornar a média salarial por sexo.
O SGBD realiza o agrupamento de dados de acordo com os valores da coluna SEXO. Em seguida, para cada grupo encontrado, a função AVG (SALARIO) é executada; e o resultado, exibido.
Retornar, por mês de aniversário, a quantidade de colaboradores, o menor salário, o maior salário e o salário médio. Ordene os resultados por mês de aniversário.
O SGBD realiza o agrupamento de dados de acordo com o mês de nascimento dos funcionários. Depois, para cada grupo encontrado, as funções de agregação são executadas e, em seguida, exibidos os resultados. Perceba também que, na linha 4, utilizamos a função ROUND com objetivo de mostrar ao usuário final somente a parte inteira dos valores resultantes da média salarial.
Retornar, por mês de aniversário, o mês, o sexo e a quantidade de colaboradores.
Apresentar os resultados ordenados pelo mês.
O SGBD realiza o agrupamento de dados de acordo com os valores do mês de aniversário. Em seguida, no contexto de cada mês encontrado, mais um grupo é construído por sexo. Finalmente, para cada ocorrência mês/sexo, o número de colaboradores é calculado.
Grupo de dados com GROUP BY e HAVING
Até o momento, utilizamos a cláusula WHERE para programar filtros em consultas, com condições simples ou compostas envolvendo colunas da tabela ou funções de data.
Contudo, você vai vivenciar situações onde será necessário estabelecer algum tipo de filtro, tendo como base um cálculo originado a partir de uma função de agregação, não sendo possível usar a cláusula WHERE. Nesses casos, utilizamos a cláusula HAVING, que serve justamente para esse propósito.
Vamos ver a seguir um exemplo de quando utilizar essa cláusula.
Suponha que o departamento de recursos humanos esteja estudando a viabilidade de oferecer bônus de 5% aos funcionários por mês de nascimento, mas limitado somente aos casos onde há mais de um colaborador aniversariando. Assim, para cada mês em questão, deseja-se listar o mês, o número de colaboradores e o valor do bônus.
Solução:
Note que estamos diante de uma estrutura de consulta muito similar ao código da consulta 03. Porém, estamos interessados em retornar somente o(s) registro(s) cujo valor da coluna quantidade seja maior que a unidade. Acontece que quantidade é uma coluna calculada com auxílio de uma função de agregação, não sendo possível programar um filtro na cláusula WHERE (WHERE QUANTIDADE>1). Assim, declaramos o filtro de interesse fazendo uso da cláusula HAVING, conforme linha 6 da consulta.
Consultas com o comando SELECT e as cláusulas GROUP BY e HAVING utilizando PGADMIN
Veja no vídeo a seguir como realizar Estudos de casos com os comandos GROUP BY e HAVING
Consultas com o comando SELECT e as cláusulas GROUP BY e HAVING utilizando PLSQL
Veja no vídeo a seguir como realizar Consultas com o comando SELECT e as cláusulas GROUP BY e HAVING
Ao longo da nossa jornada, estudamos o projeto de consultas com o uso de agrupamento de dados. Percebemos que esse recurso é imprescindível quando temos interesse na extração de informações de caráter mais analítico a partir de alguma tabela, fazendo uso de funções de agregação associadas a uma ou diversas colunas.
Ainda, percebemos que, às vezes, a natureza do problema que estamos resolvendo requer o uso de filtro tendo como base o uso de alguma função de agregação. Para isso, fizemos uso da cláusula HAVING.
Agora é com você! Vamos realizar as atividades a seguir?
Verificando o aprendizado
ATENÇÃO!
Para desbloquear o próximo módulo, é necessário que você responda corretamente a uma das seguintes questões:
O conteúdo ainda não acabou.
Clique aqui e retorne para saber como desbloquear.
Conclusão
Considerações Finais
Neste tema, tratamos do comando SELECT da SQL no PostgreSQL. Vimos a sua sintaxe básica para consulta a uma tabela, no formato SELECT ... FROM ... WHERE.
Reconhecemos que, na cláusula SELECT, são especificadas as colunas da tabela a serem selecionadas, o que corresponde à operação de projeção da Álgebra Relacional.
Aprendemos que é possível especificar expressões e funções nesta cláusula. No caso específico do PostgreSQL, vimos que a execução de funções pré-definidas é realizada especificando o nome e os parâmetros da função na cláusula SELECT, omitindo as demais cláusulas do comando, inclusive a cláusula FROM. Em seguida, estudamos o uso da cláusula WHERE, que especifica a condição de seleção de linhas da tabela, o que corresponde à operação de restrição ou seleção da Álgebra Relacional. Por fim, aplicamos cláusulas adicionais do comando SELECT, como ORDER BY, GROUP BY e HAVING, todas implementadas no PostgreSQL em compatibilidade com o padrão da linguagem SQL.
Podcast
CONQUISTAS
Você atingiu os seguintes objetivos:
Operou consultas com o comando SELECT
Operou consultas usando a cláusula WHERE
Operou consultas envolvendo agrupamento de dados