Voltar para a lista de artigos Artigos
21 minutos de leitura

Perguntas de entrevista sobre SQL para analistas de dados

Índice

Você tem uma entrevista iminente para um cargo de analista de dados e o SQL é uma das habilidades que serão testadas. Bem, estas perguntas sobre SQL para analistas de dados foram feitas especialmente para você!

O SQL é uma habilidade indispensável no kit de ferramentas de todo analista de dados. Ela simplifica a extração e a manipulação de dados, permitindo que os analistas convertam dados brutos em percepções acionáveis. Ele permite que os analistas realizem análises ad hoc, acelerando os processos de tomada de decisões organizacionais. Também incentiva a colaboração entre analistas de dados e administradores de bancos de dados, resultando em operações de dados mais tranquilas.

Se não tiver certeza de por onde começar sua jornada com o SQL, não procure mais, pois temos o curso SQL para Análise de Dados. Esse curso abrangente cobre todos os aspectos da análise de dados, inclusive a recuperação de dados e a geração de relatórios.

No entanto, você provavelmente está aqui para se preparar para a entrevista de analista de dados. Então, sem mais delongas, vamos direto ao assunto.

Como se preparar para uma entrevista com um analista de dados

Preparar-se para uma entrevista bem-sucedida com um analista de dados requer uma combinação estratégica de conhecimento técnico e preparação focada. Aqui estão algumas dicas e sugestões práticas para ajudar você a se destacar:

  • Revise os conceitos fundamentais de SQL. Certifique-se de que você tenha uma compreensão completa dos conceitos fundamentais de SQL, ou seja, consulta, filtragem, união e agregação de dados. Considere a possibilidade de se inscrever em nosso curso SQL para Iniciantes , que foi criado para reforçar seu conhecimento do SQL básico.
  • Aprenda as funções SQL padrão. Aprimore sua compreensão das funções SQL padrão, incluindo funções numéricas, de texto e de data/hora. Aprenda a lidar com eficácia com os valores NULL e a usar as funções SQL para escrever consultas mais eficazes.
  • Pratique a criação de relatórios SQL. Comece com relatórios básicos usando GROUP BY, ORDER BY e HAVING. Em seguida, você poderá avançar para relatórios intermediários e avançados que usam subconsultas, funções de janela e expressões de tabela comuns (CTEs).
  • Faça uma avaliação de habilidades. Considere fazer uma avaliação de SQL para avaliar seu nível de proficiência. Nossa avaliação de habilidades em SQL inclui 18 tarefas interativas on-line que abrangem seis áreas de competência em SQL.
  • Utilize recursos de aprendizado. Use cursos e tutoriais on-line para aprimorar seu SQL. Nossos cursos de SQL incluem materiais de aprendizagem abrangentes e exercícios práticos criados para ajudá-lo a melhorar sua análise de dados e consultas SQL. Se preferir livros, confira nossa lista com curadoria dos melhores livros sobre SQL para análise de dados.

Perguntas básicas da entrevista sobre SQL

Agora que já discutimos a importância de aprender SQL para análise de dados, vamos dar uma olhada em algumas perguntas reais de entrevistas sobre SQL adaptadas a diferentes níveis de habilidade: básico, intermediário e avançado. Tenha em mãos nossa Folha de consulta de SQL para análise de dados para ajudá-lo com os desafios que virão.

Pergunta 1: O que é SQL?

SQL (Structured Query Language, Linguagem de Consulta Estruturada) é uma linguagem de programação padrão para gerenciar e se comunicar com bancos de dados relacionais. Ela permite que os usuários consultem dados, insiram, atualizem e excluam registros, criem e modifiquem esquemas de bancos de dados e gerenciem permissões de acesso.

Pergunta 2: Liste os elementos básicos de uma consulta SQL.

Uma consulta SQL normalmente contém uma instrução:

  • SELECT instrução que recupera dados de uma ou mais tabelas.
  • FROM Cláusula WHERE (opcional) que especifica a(s) tabela(s) em que os dados residem.
  • Cláusula WHERE (opcional) que filtra os resultados com base em critérios especificados.
  • Cláusula GROUP BY (opcional) que agrupa os resultados por coluna(s).
  • Cláusula HAVING (opcional) que filtra os resultados agrupados.
  • Cláusula ORDER BY (opcional) que classifica os resultados em ordem crescente (ou decrescente).

Pergunta 3: Como você seleciona todos os dados de uma tabela?

Para recuperar todos os dados de uma tabela, use:

SELECT * 
FROM employees;

Essa consulta obtém todas as linhas de todas as colunas da tabela de funcionários:

  • SELECT *: Seleciona todas as colunas da tabela especificada; o asterisco (*) representa todas as colunas em uma tabela.
  • FROM employees: Especifica a tabela da qual os dados serão recuperados.

Pergunta 4: Como você seleciona determinadas colunas de uma tabela?

Para recuperar colunas específicas de uma tabela, você deve listar os nomes das colunas desejadas na instrução SELECT:

SELECT first_name, last_name, department 
FROM employees;

Essa consulta recupera dados somente das colunas especificadas, fornecendo uma visão focada das informações relevantes da tabela. employees tabela.

  • SELECT first_name, last_name, department: Essa consulta retorna somente os dados das colunas first_name, last_name e department
  • FROM employees: Especifica a tabela da qual os dados serão recuperados.

Também podemos nomear as colunas selecionadas usando AS:

SELECT first_name, 
last_name AS surname, 
department 
FROM employees;

Nos resultados da consulta, a coluna last_name será mostrada como sobrenome. Você pode usar isso para diferenciar duas colunas com nomes semelhantes ou para adicionar mais contexto a uma coluna. Por exemplo, renomear a coluna number para part_id_number permite que os leitores identifiquem rapidamente que tipo de dados está armazenado nessa coluna.

Pergunta 5: Explique a sintaxe da cláusula WHERE.

A cláusula WHERE filtra as linhas para atender a condições específicas. Aqui está um exemplo de sua sintaxe:

SELECT first_name, last_name
FROM employees
WHERE department = 'Sales';

Nessa consulta, WHERE limita os resultados aos dados dos funcionários do departamento de vendas.

  • SELECT first_name, last_name: Especifica de quais colunas os dados devem ser recuperados.
  • FROM employees: Especifica a tabela da qual os dados serão recuperados.
  • WHERE department = 'Sales': Limita os resultados aos funcionários do departamento de vendas.

WHERE O filtro de dados pode ser aplicado a diferentes tipos de dados. Ao filtrar por números ou datas, você pode usar comparações diretas ou operadores como <,<=,>,>=, ou =.

SELECT first_name, last_name
FROM employees
WHERE salary > 50000;

Ao filtrar os valores de NULL, os operadores IS NULL ou IS NOT NULL podem ser usados:

SELECT * 
FROM employees 
WHERE manager_id IS NULL;

Pergunta 6: Como você filtra os resultados da consulta com base em várias condições?

Para filtrar os resultados com base em várias condições, operadores lógicos como AND, OR e NOT são usados na cláusula WHERE.

  • O operador AND retorna as linhas que atendem a todas as condições especificadas.
  • O operador OR retorna linhas que atendem a pelo menos uma das condições especificadas.
  • O operador NOT retorna linhas que não atendem à (s) condição(ões).

Considere o exemplo a seguir:

SELECT first_name, last_name
FROM employees
WHERE department = 'Sales' AND salary > 50000;

Essa consulta retornará apenas os funcionários que trabalham em vendas e cujo salário seja superior a US$ 50.000. Se o funcionário trabalhar em qualquer outro departamento ou trabalhar em vendas e ganhar menos de US$ 50.000, ele não será mostrado nos resultados.

  • SELECT first_name, last_name: Determina de quais colunas os dados serão recuperados.
  • FROM employees: Especifica a tabela da qual os dados serão recuperados.
  • WHERE department = 'Sales' AND salary > 50000: Filtra os resultados para incluir apenas os funcionários do departamento de vendas com um salário mais alto.

Você pode combinar várias condições usando parênteses:

SELECT first_name, last_name
FROM employees
WHERE (department = 'Sales' AND salary > 50000) 
  OR manager_id IS NULL;

Nessa consulta, somente os funcionários que não se reportam a um gerente (ou seja, cuja ID de gerente é NULL) ou que trabalham em vendas e ganham mais de US$ 50 mil serão incluídos nos resultados.

Pergunta 7: Como você filtra os resultados para um determinado valor de texto?

Para filtrar os resultados com base em um valor específico em uma coluna de texto, use o operador LIKE . Você também precisará dos símbolos de correspondência de padrão % (corresponde a zero ou mais caracteres) e/ou _ (corresponde a qualquer caractere único). Considere o exemplo a seguir:

SELECT product_name, description
FROM products
WHERE description LIKE '%apple%';

Essa consulta demonstra o uso do site LIKE com correspondência de padrão:

  • SELECT product_name, description: especifica de quais colunas recuperar os dados.
  • FROM products: Especifica a tabela da qual os dados serão recuperados.
  • WHERE description IS LIKE '%apple%': Filtra os resultados para mostrar apenas produtos que tenham a palavra "apple" em sua descrição.

Outro exemplo poderia ser:

SELECT * 
FROM employees 
WHERE first_name LIKE 'Mar_a';

Imagine que você esteja procurando todos os funcionários chamados María ou Maria. Essa consulta retornará todos os funcionários cujos primeiros nomes comecem com "Mar", seguido de qualquer caractere no lugar de "i" e depois um "a". Esse padrão pode ser usado para corresponder tanto a 'Maria' quanto a 'María' em um banco de dados em que o nome pode não ter o acento no 'i'. (Ele também retornaria 'Marta', 'Marla', 'Marja' e quaisquer outros nomes que se encaixem no padrão).

Pergunta 8: Como atualizar linhas em um banco de dados?

Para atualizar as linhas existentes em uma tabela de banco de dados, use a instrução UPDATE:

UPDATE employees
SET salary = 60000, department = 'Marketing'
WHERE employee_id = 101;

Essa consulta demonstra como atualizar colunas existentes com novos valores para linhas que satisfazem a condição especificada.

  • UPDATE employees: Especifica qual tabela será atualizada.
  • SET salary = 60000, department = 'Marketing': Especifica as colunas e seus novos valores (atualizados).
  • WHERE employee_id = 101: Define quais linhas serão atualizadas - nesse caso, a linha em que o ID do funcionário é 101. Você também pode usar AND, OR, NOT, filtragem de números, etc. para especificar condições de atualização mais complexas.

Pergunta 9: Como remover linhas de um banco de dados?

Para remover linhas de uma tabela de banco de dados, use a instrução DELETE FROM, seguida do nome da tabela e da condição que indica quais linhas devem ser excluídas:

DELETE FROM employees
WHERE department = 'Human Resources';

Essa consulta mostra como excluir linhas de uma tabela de banco de dados com base em uma condição especificada:

  • DELETE FROM employees: Indica a tabela da qual as linhas serão excluídas.
  • WHERE department = 'Human Resources': Especifica a condição que determina quais linhas devem ser excluídas - nesse caso, todos os funcionários do departamento de Recursos Humanos. Você pode especificar as condições de exclusão usando o WHERE padrão

Pergunta 10: Como você classifica os resultados de uma consulta SQL?

Use a cláusula ORDER BY, seguida do(s) nome(s) da(s) coluna(s) pela(s) qual(is) você deseja classificar os resultados:

SELECT product_name, price
FROM products
ORDER BY price DESC;

Essa consulta demonstra como classificar os resultados com base em uma coluna especificada, permitindo que os dados sejam apresentados na ordem desejada.

  • SELECT product_name, price: Determina de quais colunas os dados serão recuperados.
  • FROM products: Define a tabela em que esses dados residem.
  • ORDER BY price DESC: Classifica os resultados (do maior para o menor, também conhecido como ordem decrescente) pelo price A ordem de classificação padrão do SQL é ascendente, com valores de texto classificados de A a Z e valores numéricos classificados do menor para o maior. Se DESC não for especificado, a classificação será feita em ordem ascendente.

Perguntas intermediárias sobre SQL

Pergunta 11: Como combinar dados de várias tabelas em uma consulta?

As consultas SQL usam as cláusulas JOIN para combinar resultados de várias tabelas. As cláusulas JOINpermitem que você recupere dados de tabelas relacionadas (ou seja, tabelas com uma ou mais colunas em comum) com base em critérios específicos. Aqui está um exemplo de JOIN:

SELECT orders.order_id, customers.customer_name
FROM orders
JOIN customers 
ON orders.customer_id = customers.customer_id;

Essa consulta recupera o ID do pedido e o nome do cliente das tabelas orders e customers tabelas. Ela une as informações onde os registros em ambas as tabelas contêm um ID de cliente correspondente. Para obter mais informações sobre o funcionamento do JOINs, consulte Um Guia Ilustrado para o SQL INNER JOIN. Você pode encontrar mais exemplos de perguntas da entrevista JOIN em As 10 principais perguntas da entrevista sobre SQL JOIN e como respondê-las.

Pergunta 12: Descreva os tipos de JOIN.

Os tipos JOIN incluem diversas variações, cada uma servindo a um propósito específico na combinação de resultados de várias tabelas:

  • INNER JOIN: Recupera apenas os registros em que ambas as tabelas têm valores correspondentes com base na condição especificada.
  • LEFT JOIN: retorna todos os registros da tabela da esquerda e todos os registros correspondentes da tabela da direita. Se nenhuma correspondência for encontrada, os valores NULL serão retornados para as colunas da tabela da direita.
  • RIGHT JOIN: retorna todos os registros da tabela da direita e todos os registros correspondentes da tabela da esquerda. Se nenhuma correspondência for encontrada, os valores NULL serão retornados para as colunas da tabela da esquerda.
  • FULL JOIN: retorna todos os registros quando há uma correspondência nas tabelas da esquerda ou da direita. Se nenhuma correspondência for encontrada, as linhas não correspondentes serão retornadas com NULLs.
  • CROSS JOIN: retorna o produto cartesiano das duas tabelas, ou seja, todas as combinações possíveis de linhas.

Embora um self-JOIN use a mesma sintaxe de outros JOINs, na verdade ele envolve a união de uma tabela a ela mesma. Isso permite comparações entre linhas dentro da mesma tabela.

Pergunta 13: Descreva LEFT JOIN e a diferença entre LEFT JOIN e INNER JOIN.

LEFT JOIN LEFT JOIN é um tipo de OUTER JOIN que retorna todas as linhas da tabela da esquerda mais as linhas correspondentes da tabela da direita. Se não houver correspondência, os valores NULL serão retornados para as colunas da tabela da direita.

A principal diferença entre LEFT JOIN e INNER JOIN é seu comportamento com linhas não correspondentes:

  • LEFT JOIN O retorna todas as linhas da tabela da esquerda, independentemente de haver uma correspondência na tabela da direita. Se não houver correspondência na tabela da direita, os valores NULL serão atribuídos a essas colunas.
  • INNER JOIN retorna somente as linhas correspondentes de ambas as tabelas. As linhas não correspondentes de nenhuma das tabelas são removidas do conjunto de resultados.

Imagine que você tenha uma tabela com os nomes dos alunos e outra com suas notas. Usando um LEFT JOIN, você obteria uma lista de todos os alunos, incluindo aqueles que têm notas NULL. Por outro lado, um INNER JOIN mostraria apenas os alunos que têm notas, excluindo os registros com notas NULL.

Pergunta 14: O que o GROUP BY faz?

A cláusula GROUP BY agrupa linhas com os mesmos valores em linhas de resumo. Ela é frequentemente combinada com funções de agregação (como SUM(), COUNT() e AVG()) para realizar cálculos em dados agrupados.

SELECT department, COUNT(employee_id)
FROM employees
GROUP BY department;

Neste exemplo, a consulta agrupa as linhas com base nos valores da coluna department e conta os valores de employee_id para cada departamento. Para obter mais exemplos de consultas semelhantes, consulte nosso artigo As 9 principais perguntas da entrevista sobre SQL GROUP BY.

Pergunta 15: O que são funções de agregação?

As funções de agregação do SQL calculam um conjunto de valores e retornam um único valor. Essas funções são frequentemente usadas para resumir dados e realizar cálculos em várias linhas.

As funções agregadas SQL mais comuns são:

  • SUM(): Retorna a soma dos valores numéricos em um conjunto.
  • COUNT(): Conta o número de linhas em um conjunto, opcionalmente incluindo valores não nulos.
  • AVG(): Determina a média dos valores numéricos em um conjunto.
  • MIN(): Retorna o valor mínimo do conjunto.
  • MAX(): Retorna o valor máximo do conjunto.
SELECT 
    AVG(salary) AS avg_salary,
    COUNT(*) AS total_employees,
    MAX(age) AS max_age
FROM 
    employees;

Neste exemplo, as funções de agregação calculam o salário médio, contam o número total de funcionários e determinam a maior idade entre todos os funcionários da tabela employees da tabela. Confira nossa Folha de dicas de funções agregadas SQL para obter mais exemplos dessas funções.

Pergunta 16: O que o HAVING faz?

A cláusula HAVING filtra os resultados da cláusula GROUP BY. Ela é usada somente com dados agregados, permitindo que você aplique critérios de filtragem a resultados agrupados.

Imagine que você tenha uma tabela de pedidos e queira encontrar o valor total das vendas de cada cliente. Entretanto, você só quer incluir clientes com um total de US$ 1.000 ou mais. Esta é a consulta que você usaria:

SELECT customer_id, SUM(amount) AS total_sales
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 1000;

Aqui, a cláusula HAVING filtra os grupos (clientes) com base na condição de que o valor total de vendas do cliente seja superior a US$ 1.000. Ela é aplicada após a operação GROUP BY e permite que você filtre os resultados agrupados.

Pergunta 17: Qual é a diferença entre WHERE e HAVING?

HAVING filtra grupos de linhas e é aplicado após a instrução GROUP BY. Ele se destina especificamente a dados agregados e permite que você aplique critérios de filtragem a resultados agrupados. WHERE filtra linhas individuais e é aplicado antes de GROUP BY.

Imagine que você tenha uma tabela de pedidos e queira calcular o valor total de vendas de cada produto, mas somente para produtos cujas vendas totais excedam US$ 10.000. Veja como você usaria a cláusula HAVING:

SELECT 
    product_id,
    SUM(quantity_sold * price_per_unit) AS total_sales
FROM 
    sales
GROUP BY 
    product_id
HAVING 
    SUM(quantity_sold * price_per_unit) > 10000;

Agora considere o mesmo cenário, mas, desta vez, você só quer precisar das vendas em que o preço do produto por unidade é maior que US$ 10 e a venda total é superior a US$ 10.000. Algumas dessas informações são encontradas em linhas individuais, portanto, as linhas devem ser filtradas antes do agrupamento. Também precisamos filtrar o total de vendas, portanto, os grupos também serão filtrados.

SELECT 
    product_id,
    SUM(quantity_sold * price_per_unit) AS total_sales
FROM 
    sales
WHERE
    price_per_unit > 10
GROUP BY 
    product_id
HAVING 
    SUM(quantity_sold * price_per_unit) > 10000;

Isso demonstra como a cláusula WHERE filtra linhas individuais com base em condições, enquanto a cláusula HAVING filtra grupos de linhas com base em dados agregados. Para se aprofundar nesse assunto, confira nosso artigo HAVING vs. WHERE em SQL: O que você deve saber.

Pergunta 18: Dê um exemplo de uma subconsulta SQL.

Uma subconsulta SQL, também conhecida como consulta aninhada ou consulta interna, é uma consulta contida em outra consulta. Ela é usada nas declarações SELECT, INSERT, UPDATE e DELETE para executar operações com base nos resultados de outra consulta. Considere o exemplo a seguir:

SELECT product_name
FROM products
WHERE category_id IN (SELECT category_id FROM categories WHERE category_name = 'Electronics');

Nessa consulta, a cláusula WHERE usa uma subconsulta para recuperar valores category_id da tabela . categoriescategory_name 'Electronics' A consulta externa recupera os nomes dos produtos eletrônicos com base nos resultados da subconsulta.

SQL Avançado Perguntas

Pergunta 19: Qual é a diferença entre UNION e UNION ALL?

UNION remove as linhas duplicadas do conjunto de resultados combinados. Em contrapartida, UNION ALL mantém todas as linhas, inclusive as duplicadas.

Vamos imaginar que temos duas tabelas, employees e managersambas contendo a coluna employee_id. Queremos combinar os IDs de funcionários das duas tabelas.

SELECT employee_id FROM employees
UNION
SELECT employee_id FROM managers;

Nessa consulta, se employee_id aparecer em ambas as tabelas employees e managersUNION removerá a duplicata, mas UNION ALL manterá as duas ocorrências. Você pode ler mais sobre isso em UNION vs. UNION ALL no SQL: Qual é a diferença?

Pergunta 20: O que são funções de janela do SQL e para que elas são usadas?

As funções de janela do SQL executam cálculos em um subconjunto de linhas da tabela que estão relacionadas à linha atual. Elas são usadas em uma janela, que é uma coleção de linhas relacionadas à linha atual.

As funções de janela diferem das consultas do site GROUP BY porque o site GROUP BY agrega dados com base em colunas específicas, reduzindo várias linhas em linhas de resumo. Por outro lado, as funções de janela executam cálculos em um conjunto de linhas relacionadas à linha atual dentro do resultado da consulta, sem recolher o conjunto de resultados. Você pode ler mais em SQL Funções de Janela (Window Functions) em SQL vs. GROUP BY: Qual é a diferença?

Para aplicar funções de janela, a cláusula OVER é usada com a seguinte sintaxe:

<function>(column) OVER (PARTITION BY partition_column ORDER BY order_column)

Where:

  • <function> indica a função de janela que está sendo usada (por exemplo, AVG(), SUM(), RANK()).
  • (column): A coluna ou expressão à qual a função de janela é aplicada.
  • PARTITION BY partition_column: Uma cláusula opcional que divide o conjunto de resultados em subconjuntos com base em uma ou mais colunas. A função é então aplicada a cada partição individualmente.
  • ORDER BY order_column: Uma cláusula opcional que especifica a ordem das linhas em cada partição. Isso determina quais linhas aparecem no quadro da janela para cada cálculo.

As funções de janela são usadas com frequência para calcular valores agregados, como médias, totais e contagens em um conjunto de linhas. Elas também são usadas para comparar valores com outras linhas no conjunto de resultados; isso ajuda a determinar classificações, numerações de linhas e valores máximos e mínimos em uma janela. Para saber mais, leia Quando devo usar o SQL Funções de Janela (Window Functions) em SQL?

Imagine que temos uma tabela chamada employees com as colunas employee_id, department_id e salary. Podemos calcular o salário médio por departamento usando a função de janela AVG():

SELECT 
    employee_id, 
    department_id, 
    salary,
    AVG(salary) OVER (PARTITION BY department_id) AS avg_salary_per_department
FROM 
    employees;

As funções de janela do SQL são ótimas para calcular agregados sobre subconjuntos específicos de dados, como mostrado neste exemplo de cálculo de salários médios dentro dos departamentos. Elas são de grande valia para a classificação de dados, o que pode ser útil em tarefas como a avaliação de desempenho. Essas funções facilitam a realização de comparações analíticas e a identificação de tendências, como a receita trimestral. Veremos mais exemplos nas perguntas a seguir.

Pergunta 21: Como você classifica as linhas no SQL?

Para classificar as linhas no SQL, use as funções de janela RANK(), DENSE_RANK(), PERCENT_RANK() e ROW_NUMBER(). Essas funções atribuem uma classificação ou um número de linha a cada linha no conjunto de resultados com base em critérios predefinidos:

  • RANK(): Atribui uma classificação exclusiva a cada linha distinta. As linhas com o mesmo valor recebem a mesma classificação, mas há lacunas na classificação (por exemplo, 1,2,3,3,5).
  • DENSE_RANK(): Também atribui uma classificação exclusiva a cada linha e dá às linhas empatadas a mesma classificação, mas elimina as lacunas na sequência de classificação. Em vez disso, atribui a próxima classificação consecutiva à linha após as linhas empatadas (por exemplo, 1,2,3,3,4).
  • PERCENT_RANK() retorna a classificação de cada linha no conjunto de partição/resultado como um percentil (de 0 a 1).
  • ROW_NUMBER() atribui um número de linha exclusivo a cada linha no conjunto de resultados, independentemente de duplicatas ou valores de empate.

Leia nossa Visão geral das funções de classificação no SQL para saber mais sobre as diferenças entre essas funções.

Imagine que temos uma tabela chamada employees com as colunas employee_id, employee_name e salary. Podemos classificar os funcionários com base em seus salários em ordem decrescente usando a função de janela RANK():

SELECT 
    employee_id, 
    employee_name, 
    salary,
    RANK() OVER (ORDER BY salary DESC) AS salary_rank
FROM 
    employees;

Essa consulta retorna IDs, nomes e salários dos funcionários da tabela employees tabela. Em seguida, ela classifica cada funcionário de acordo com o salário, sendo que os salários mais altos recebem classificações mais baixas. O resultado inclui as colunas originais, bem como uma nova coluna, salary_rank, que indica a classificação salarial de cada funcionário.

Pergunta 22: O que é um CTE? Quando você o utiliza?

Um CTE, ou expressão de tabela comum, é um conjunto de resultados nomeado temporário que pode ser usado em uma instrução SELECT, INSERT, UPDATE ou DELETE. Ele permite dividir consultas complexas em partes gerenciáveis e reutilizáveis.

Um CTE, introduzido com a palavra-chave WITH, permite que você crie uma estrutura temporária semelhante a uma tabela que existe somente durante a execução da consulta. A tabela temporária pode então ser consultada na mesma consulta. Os CTEs são especialmente úteis para dividir cálculos complexos em várias etapas; isso melhora a organização do código e permite a reutilização do código.

Suponha que tenhamos uma tabela chamada employees com as colunas employee_id, employee_name e salary. Podemos criar um CTE para selecionar funcionários com alta remuneração que ganham mais de US$ 100.000:

WITH high_paid_employees AS (
  SELECT 
      employee_id, 
      employee_name, 
      salary
  FROM 
      employees
  WHERE 
      salary > 100000
)
SELECT 
    * 
FROM 
    high_paid_employees;

Pergunta 23: O que é um total em execução e como você o calcula no SQL?

Um total em execução, também conhecido como soma cumulativa, é a soma de um valor em um conjunto de linhas em uma ordem específica. No SQL, um total em execução pode ser calculado usando SUM() e a cláusula OVER().

A consulta a seguir calcula o total em execução de order_amount em todas as linhas da tabela orders classificadas por order_date:

SELECT 
    order_date, 
    order_amount,
    SUM(order_amount) OVER (ORDER BY order_date) AS running_total
FROM 
    orders;

Pergunta 24: O que é uma média móvel e como você a calcula no SQL?

Uma média móvel representa a média de um conjunto de valores em um conjunto de tempos, em que a janela"se move" ao longo do conjunto de dados. No SQL, você pode calcular uma média móvel usando AVG() com OVER() e especificando um quadro de janela.

A consulta a seguir calcula a média móvel do valor da linha atual e das duas linhas anteriores, ordenadas por data.

SELECT 
    date, 
    value,
    AVG(value) OVER (ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_average
FROM 
    dataset;

Pergunta 25: Como você calcula a diferença ano a ano em SQL?

Para calcular a diferença ano a ano no SQL, use funções como LAG() para comparar valores entre linhas consecutivas.

A consulta a seguir calcula a diferença ano a ano na receita subtraindo a receita do ano atual da receita do ano anterior:

SELECT 
    year, 
    revenue,
    revenue - LAG(revenue, 1) OVER (ORDER BY year) AS year_to_year_difference
FROM 
    yearly_revenue;

Mais ajuda com perguntas de entrevista sobre SQL para analistas de dados

A proficiência em SQL é essencial para o sucesso de um analista de dados. Ela permite a interação eficiente com bancos de dados relacionais, simplificando a recuperação, a manipulação e os cálculos estatísticos de dados. Ao aperfeiçoar suas habilidades em SQL, você poderá abordar com confiança as entrevistas com analistas de dados.

Lembre-se: a prática leva à perfeição. Considere a possibilidade de se inscrever em um de nossos cursos interativos, como o SQL for Data Analysis. Você também pode encontrar muitos outros exemplos de perguntas de entrevistas em nosso blog, como o artigo Top 27 Entrevistas SQL Avançadas Perguntas com Respostas. Você estará preparado para vencer a entrevista em pouco tempo!