Aprenda SQL: práticas de consulta SQL

Aprenda SQL: práticas de consulta SQL

Aprenda SQL: práticas de consulta SQL 1
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Hoje é o dia da prática de SQL nº 1. Nesta série, até agora, abordamos os comandos SQL mais importantes (CREATE DATABASE & CREATE TABLE, INSERT, SELECT) e alguns conceitos (chave primária, chave estrangeira) e teoria (procedimentos armazenados, funções definidas pelo usuário, visualizações). Agora é hora de discutir algumas consultas SQL interessantes.

O Modelo

Vamos dar uma olhada rápida no modelo que usaremos nesta prática.

Prática de SQL - o modelo de dados que usaremos no artigo

Você pode esperar que, em situações da vida real (por exemplo, entrevista), tenha um modelo de dados à sua disposição. Caso contrário, você terá a descrição do banco de dados (tabelas e tipos de dados + descrição adicional do que é armazenado, onde e como as tabelas estão relacionadas).

A pior opção é que você deve verificar todas as tabelas primeiro. Por exemplo, você deve executar uma instrução SELECT em cada tabela e concluir o que é onde e como as tabelas estão relacionadas. Provavelmente isso não acontecerá na entrevista, mas poderá ocorrer na vida real, por exemplo, quando você continuar trabalhando em um projeto existente.

Antes de começarmos

O objetivo desta prática SQL é analisar algumas tarefas típicas nas quais você pode se deparar na entrevista. Outros lugares onde isso pode ajudá-lo são tarefas da faculdade ou a conclusão de tarefas relacionadas a cursos on-line.

O foco deve estar no entendimento do que é necessário e qual é o objetivo de aprendizado por trás dessa pergunta. Antes de continuar, sinta-se à vontade para atualizar seu conhecimento sobre INNER JOIN e LEFT JOIN, como associar várias tabelas, funções agregadas SQL e a abordagem de como escrever consultas complexas. Se você estiver pronto, vamos dar uma olhada nas 2 primeiras consultas (teremos mais algumas nos próximos artigos). Para cada consulta, descreveremos o resultado necessário, examinaremos a consulta, analisaremos o que é importante para essa consulta e examinaremos o resultado.

Leia Também  Anunciando duas novas classes de detecção de parâmetros

Prática SQL nº 1 – Agregação e junção esquerda

Crie um relatório que retorne uma lista de todos os nomes de países (em inglês), juntamente com o número de cidades relacionadas que temos no banco de dados. Você precisa mostrar todos os países e atribuir um nome razoável à coluna agregada. Ordene o resultado pelo nome do país em ordem crescente.

Vamos analisar as partes mais importantes desta consulta:

  • Usamos LEFT JOIN (LEFT JOIN cidade ON country.id = city.country_id) porque precisamos incluir todos os países, mesmo aqueles sem cidade relacionada

  • Devemos usar COUNT (city.id) AS number_of_cities e não apenas COUNT (*) AS number_of_cities Porque CONTAGEM(*) contaria se houver uma linha no resultado (LEFT JOIN cria uma linha, não importa se há dados relacionados em outra tabela ou não). Se contarmos o city.id, obteremos o número de cidades relacionadas

  • A última coisa importante é que usamos GRUPO POR country.id, country.country_name_eng em vez de usar apenas GRUPO POR country.country_name_eng. Em teoria (e na maioria dos casos), o agrupamento por nome deve ser suficiente. Isso funcionará bem se o nome estiver definido como ÚNICO. Ainda, incluir uma chave primária do dicionário, em casos semelhantes a este, é mais do que o desejado

Você pode ver o resultado retornado na figura abaixo.

combinando LEFT JOIN com função agregada

Prática 2 do SQL – Combinando subconsulta e função agregada

Escreva uma consulta que retorne o ID e o nome do cliente e o número de chamadas relacionadas a esse cliente. Retorne apenas clientes que tenham mais do que o número médio de chamadas de todos os clientes.

As coisas importantes que gostaria de enfatizar aqui são:

  • Observe que usamos funções agregadas duas vezes, uma na consulta “principal” e uma na subconsulta. Isso é esperado porque precisamos calcular esses dois valores agregados separadamente – uma vez para todos os clientes (subconsulta) e para cada cliente separadamente (consulta “principal”)

  • A função agregada na consulta “principal” é COUNT (call.id). Ele é usado na parte SELECT da consulta, mas também precisamos dela na parte HAVING da consulta (Observação: a cláusula HAVING está desempenhando o papel da cláusula WHERE, mas para valores agregados)

  • O grupo é criado pelo ID e pelo nome do cliente. Esses valores são os que precisamos ter no resultado

  • Na subconsulta, dividimos o número total de linhas (CONTAGEM(*)) pelo número de clientes distintos aos quais essas ligações estavam relacionadas (COUNT (DISTINCT customer_id)) Isso nos deu o número médio de chamadas por cliente

  • A última coisa importante aqui é que usamos o operador CAST (CAST (… COMO DECIMAL (5,2))) Isso é necessário porque o resultado final provavelmente seria um número decimal. Como os dois COUNTs são inteiros, o SQL Server também retornará um resultado inteiro. Para impedir que isso aconteça, precisamos CASTar o divisor e o divisor como números decimais

Vamos dar uma olhada no que a consulta realmente retornou.

Prática SQL - o resultado retornado pela subconsulta usando a função agregada

Conclusão

Na prática atual de SQL, analisamos apenas dois exemplos. Ainda assim, essas duas contêm algumas partes que você encontrará frequentemente em tarefas – seja no seu trabalho, seja em um teste (entrevista de emprego, tarefas na faculdade, cursos on-line etc.). Na próxima parte, continuaremos com algumas consultas mais interessantes que devem ajudá-lo a resolver problemas com os quais você pode se deparar.

Índice

Emil Drkusic
Últimas mensagens de Emil Drkusic (ver todos)

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br