Aprenda exemplos de SQL: SQL Query

Aprenda exemplos de SQL: SQL Query

Aprenda exemplos de SQL: SQL Query 1
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


No artigo anterior, praticamos SQL,
    e hoje, continuaremos com mais alguns exemplos de SQL. O objetivo deste artigo é começar com uma consulta bastante simples e avançar para consultas mais complexas. Examinaremos as perguntas que você poderia precisar na entrevista de emprego, mas também algumas que você precisaria em situações da vida real. Então, aperte o cinto, estamos decolando!

Modelo de dados

Como sempre, vamos primeiro dar uma olhada rápida no modelo de dados que usaremos. Este é o mesmo modelo que estamos usando nesta série, então você já deve estar familiarizado. Caso contrário, basta dar uma olhada rápida nas tabelas e como elas estão relacionadas.

Exemplos SQL - o modelo de dados que usaremos no artigo

Analisaremos 6 exemplos de SQL, começando por um bem simples. Cada exemplo adicionará algo novo, e nós iremos
    discuta o objetivo de aprendizado por trás de cada consulta. Usarei a mesma abordagem abordada no artigo Aprenda SQL: como escrever uma consulta SELECT complexa? Vamos começar.

Exemplo SQL nº 1 – SELECT

Queremos examinar o que está na tabela de chamadas em nosso modelo. Portanto, precisamos selecionar todos os atributos e iremos
    classifique-os primeiro por employee_id e depois por start_time.

Consulta SQL - chamadas classificadas por hora de início

Esta é uma consulta bastante simples e você deve entendê-la sem nenhum problema. A única coisa que gostaria de destacar aqui é que solicitamos nosso resultado primeiro pelo ID do funcionário (call.employee_id ASC) e depois pelo horário de início da chamada (call.start_time). Em situações da vida real, isso é algo que você faria se desejasse realizar análises durante o tempo com base nos critérios especificados (todos os dados para o mesmo funcionário são solicitados um após o outro).

Exemplo 2 do SQL – Função DATEDIFF

Precisamos de uma consulta que retorne todos os dados da chamada, mas também a duração de cada chamada, em segundos. Nós vamos usar o
    consulta anterior como ponto de partida.

Consulta SQL - lista de todas as chamadas e duração da chamada

O resultado retornado é quase o mesmo da consulta anterior (mesmas colunas e ordem), exceto por uma coluna adicionada. Nomeamos esta coluna como call_duration. Para obter a duração da chamada, usamos a função DATEDIFF do SQL Server.
    São necessários 3 argumentos, a unidade para a diferença (precisamos de segundos), o primeiro valor de data e hora (hora de início, menor
    valor), segundo valor de data e hora (hora final, valor mais alto). A função retorna a diferença horária na unidade especificada.

  • Nota: O SQL Server possui várias funções (data e hora) e abordaremos as mais importantes nos próximos artigos.

Exemplo 3 do SQL – Função agregada DATEDIFF +

Agora, queremos retornar a duração total de todas as chamadas para cada funcionário. Portanto, queremos ter 1 linha para cada funcionário e a soma da duração de todas as chamadas que ele já fez. Continuaremos de onde paramos com a consulta anterior.

Leia Também  Array

Consulta SQL - duração da chamada por estatísticas de funcionário

Não há nada a acrescentar em relação ao resultado – conseguimos exatamente o que queríamos. Mas vamos comentar sobre como conseguimos isso. Algumas coisas que gostaria de enfatizar aqui são:

  • Juntamos tabelas de chamada e funcionário porque precisamos de dados de ambas as tabelas (detalhes do funcionário e duração da chamada)

  • Usamos a função agregada SUM (…) em torno da duração da chamada calculada anteriormente para cada funcionário

  • Como agrupamos tudo no nível do funcionário, temos exatamente 1 linha por funcionário

  • Nota: Não há regras especiais quando você combina o resultado retornado por qualquer função e função agregada. No nosso caso, você pode usar a função SUM com DATEDIFF sem nenhum problema.

# 4 Exemplo de SQL – Calculando a proporção

Para cada funcionário, precisamos retornar todas as suas chamadas com a duração. Também queremos saber a porcentagem de tempo que um funcionário passou nesta chamada, em comparação com o tempo total de todas as suas chamadas.

  • Dica: Precisamos combinar o valor calculado para uma linha com o valor agregado. Para fazer isso, usaremos uma subconsulta para calcular esse valor agregado e ingressar na linha relacionada.

Consulta SQL - estatísticas de duração da chamada

Você pode perceber que conseguimos combinar valores de linha com valor agregado. Isso é muito útil porque você
    poderia colocar esses cálculos dentro da consulta SQL e evitar trabalhos adicionais posteriormente. Esta consulta contém mais alguns
    conceitos interessantes que devem ser mencionados:

  • O mais importante é que colocamos toda a consulta retornando o valor agregado na subconsulta (o
            parte a partir do 2º INNER JOIN (INNER JOIN () e terminando com ) AS duration_sum ON employee.id = duration_sum.id. Entre esses colchetes, colocamos a consulta ligeiramente modificada da parte 2 do exemplo de SQL –
            Função DATEDIFF. Essa subconsulta retorna o ID de cada funcionário e a SOMA de todas as suas durações de chamadas. Somente
            pense nisso como uma única tabela com esses dois valores

  • Juntamos a “tabela” do marcador anterior às chamadas de chamada e funcionário, porque precisamos de valores dessas duas tabelas

  • Já analisamos o DATEDIFF (…) função usada para calcular a duração de uma única chamada na parte # 2 Exemplo SQL – Função DATEDIFF

  • Esta parte CAST (CAST (DATEDIFF (“SEGUNDO”, call.start_time, call.end_time) AS DECIMAL (7,2)) /
            CAST (duration_sum.call_duration_sum AS DECIMAL (7,2)) AS DECIMAL (4,4)) AS call_percentage
    é muito importante.
            Primeiro, lançamos os dois dividendos (CAST (DATEDIFF (“SEGUNDO”, call.start_time, call.end_time) AS DECIMAL (7,2))) e
            divisor (CAST (duration_sum.call_duration_sum AS DECIMAL (7,2)) como números decimais. Enquanto eles são números inteiros,
            o resultado esperado é um número decimal e precisamos “dizer” isso ao SQL Server. No caso, não temos CAST
            Para eles, o SQL Server executaria a divisão de números inteiros. Também convertemos o resultado como um número decimal. este
            não era necessário porque já definimos isso ao transmitir dividendos e divisores, mas eu queria formatar
            o resultado terá 4 valores numéricos e todos os 4 serão casas decimais (essa é uma porcentagem em decimal)
            formato)

Neste exemplo, devemos lembrar que podemos usar subconsultas para retornar valores adicionais necessários. Retornando o
    valor agregado usando uma subconsulta e combinando esse valor com a linha original é um bom exemplo de onde poderíamos
    faça exatamente isso.

# 5 Exemplo de SQL – média (AVG)

Precisamos de duas consultas. Primeiro retornará a duração média da chamada por funcionário, enquanto o segundo retornará
    duração média das chamadas para todas as chamadas.

Consulta SQL - duração média da chamada por funcionário

Não há necessidade de explicar isso com mais detalhes. Calcular a duração média da chamada por funcionário é o mesmo que calcular a SOMA das durações das chamadas por funcionário (Exemplo 3 do SQL – DATEDIFF + Função Agregada). Acabamos de substituir a função agregada SUM pelo AVG.

A segunda consulta retorna a duração das chamadas do AVG de todas as chamadas. Observe que não usamos GROUP BY. Simplesmente não precisamos, porque todas as linhas entram neste grupo. Este é um dos casos em que a função agregada pode ser usada sem
    a cláusula GROUP BY.

Exemplo # 6 do SQL – comparar valores do AVG

Precisamos calcular a diferença entre a duração média das chamadas para cada funcionário e a média das chamadas
    duração para todas as chamadas.

Exemplos de SQL - razão de duração da chamada AVG

Como essa consulta é realmente complexa, vamos comentar primeiro o resultado. Temos exatamente 1 linha por funcionário com uma duração média de chamada por funcionário e a diferença entre essa duração média e média de todas as chamadas.

Então, o que fizemos para conseguir isso. Vamos mencionar as partes mais importantes desta consulta:

  • Novamente, usamos uma subconsulta para retornar o valor agregado – duração média de todas as chamadas

  • Além disso, adicionamos isso – 1 AS join_id. Ele serve para o propósito de unir essas duas consultas usando o ID. Também “geraremos” o mesmo valor na subconsulta principal

  • A subconsulta “main” retorna dados agrupados no nível do funcionário. Mais uma vez que “geramos” chave artificial, usaremos para ingressar nessas duas subconsultas – 1 AS join_id

  • Reunimos subconsultas usando a chave artificial (join_id) e calculamos a diferença entre os valores médios

Conclusão

Espero que você tenha aprendido muito no artigo de hoje. A principal coisa que gostaria que você se lembrasse depois disso é que você pode executar muitos cálculos estatísticos diretamente no SQL e, em seguida, usar o formulário da Web ou o Excel para apresentar resultados usando tabelas e gráficos brilhantes. Continuaremos praticando no próximo artigo, portanto, fique atento.

Índice

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

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