Facebook Twitter WhatsApp LinkedIn Pinterest

Hello friends! neste post, veremos algumas das consultas SQL mais comuns feitas em entrevistas. Estas perguntas e respostas SQL são desenhadas tanto para os mais frescos como para os mais experientes.
Na verdade, a maioria destas perguntas foram feitas durante as entrevistas nas diferentes fases da minha carreira.

Se você quiser pular as perguntas básicas e começar com algumas consultas SQL complicadas, então você pode passar diretamente para nossas consultas SQL perguntas de entrevista para a seção experiente.

Consulte as duas tabelas abaixo para referência enquanto tenta criar consultas para as perguntas feitas aqui.

Tabela – Detalhes do Funcionário

EmpId Nome Completo Gerenciador DateOfJoining Cidade
121 John Snow 321 01/31/2014 Toronto
321 Walter White 986 01/30/2015 Califórnia
421 Kuldeep Rana 876 27/11/2016 New Delhi

Table – EmployeeSalary

ImpId Projeto Salário Variável
121 P1 8000 500
321 P2 10000 1000
421 P1 12000 0

Para sua conveniência, Eu compilei as 10 perguntas mais importantes para si. Você pode tentar resolver estas questões e clicar nos links para ir para suas respectivas respostas.

  1. SQL Query para ir buscar registros que estão presentes em uma tabela mas não em outra tabela.
  2. SQL query para ir buscar todos os funcionários que não estão trabalhando em nenhum projeto.
  3. SQL query para ir buscar todos os funcionários de EmployeeDetails que se juntaram no Ano 2020.
  4. Vai buscar todos os funcionários da EmployeeDetails que tenham um registro salarial no EmployeeSalary.
  5. Escrever uma consulta SQL para buscar a contagem de funcionários no projeto.
  6. Vai buscar os nomes e salário dos funcionários mesmo que o valor do salário não esteja presente para o funcionário.
  7. Escrever uma consulta SQL para buscar todos os funcionários que também são gerentes.
  8. Escreva uma consulta SQL para buscar registros duplicados de EmployeeDetails.
  9. Escreva uma consulta SQL para buscar apenas linhas ímpares da tabela.
  10. Escreva uma consulta para encontrar o 3º salário mais alto de uma tabela sem a palavra-chave top ou limit.

Or, você também pode pular para nossas duas seções abaixo sobre perguntas de entrevista para profissionais experientes e recém-chegados.

Conteúdo

Perguntas de Entrevista SQL para Freshers

Aqui está uma lista de perguntas e respostas SQL para os candidatos mais recentes que os ajudará em suas entrevistas. Nestas consultas, vamos focar apenas nos comandos SQL básicos.

Ques.1. Escreva uma consulta SQL para ir buscar o EmpId e FullName de todos os funcionários que trabalham sob Manager com id – ‘986’.
Ans. Podemos usar a tabela EmployeeDetails para ir buscar os detalhes dos funcionários com uma cláusula where para o manager-

SELECT EmpId, FullNameFROM EmployeeDetailsWHERE ManagerId = 986;

Ques.2Escreva uma consulta SQL para ir buscar os diferentes projetos disponíveis na tabela EmployeeSalary.
Ans. Enquanto nos referimos à tabela EmployeeSalary, podemos ver que esta tabela contém valores de projetos correspondentes a cada funcionário, ou podemos dizer que teremos valores de projetos duplicados ao selecionar Valores de projetos desta tabela.
Então, usaremos a cláusula distinta para obter os valores únicos do Projeto.

SELECT DISTINCT(Project)FROM EmployeeSalary;

Ques.3. Escreva uma consulta SQL para obter a contagem dos funcionários que trabalham no projeto ‘P1’.
Ans. Aqui, estaríamos usando a contagem de funções agregadas() com o SQL onde clause-

SELECT COUNT(*) FROM EmployeeSalary WHERE Project = 'P1';

Ques.4Escreva uma consulta SQL para encontrar o salário máximo, mínimo e médio dos funcionários.
Ans. Podemos usar a função agregada de SQL para buscar os valores máximo, mínimo e médio-

SELECT Max(Salary), Min(Salary), AVG(Salary) FROM EmployeeSalary;

Ques.5Escreva uma consulta SQL para encontrar o id do funcionário cujo salário está na faixa de 9000 e 15000.
Ans. Aqui, podemos usar o operador ‘Between’ com uma cláusula where.

SELECT EmpId, SalaryFROM EmployeeSalaryWHERE Salary BETWEEN 9000 AND 15000;

Ques.6. Escreva uma consulta SQL para buscar os funcionários que moram em Toronto e trabalham sob gerência com ManagerId – 321.
Ans. Como temos que satisfazer ambas as condições – funcionários morando em ‘Toronto’ e trabalhando no Projeto ‘P2’. Assim, usaremos E operador aqui –

SELECT EmpId, City, ManagerIdFROM EmployeeDetailsWHERE City='Toronto' AND ManagerId='321';

Ques.7. Escreva uma pergunta SQL para ir buscar todos os funcionários que moram na Califórnia ou trabalham sob um gerente com ManagerId – 321.
Ans. Esta pergunta de entrevista requer que satisfaçam uma das condições – funcionários que moram na Califórnia e trabalham sob gerente com ManagerId – 321.
Ans. Assim, usaremos o operador OR aqui -15>

SELECT EmpId, City, ManagerIdFROM EmployeeDetailsWHERE City='California' OR ManagerId='321';

Ques.8Escreva uma consulta SQL para ir buscar todos os funcionários que trabalham no Projeto que não P1.
Ans. Aqui, podemos usar o operador NOT para ir buscar as linhas que não estão satisfazendo a condição dada.

SELECT EmpIdFROM EmployeeSalaryWHERE NOT Project='P1';

Or usando o não igual ao operador-

SELECT EmpIdFROM EmployeeSalaryWHERE Project <> 'P1';

Para a diferença entre os operadores NOT e <> SQL, verifique este link – Diferença entre os operadores NOT e != operadores.

Ques.9Escreva uma consulta SQL para exibir o salário total de cada funcionário adicionando o Salário com Valor Variável.
Ans. Aqui, podemos simplesmente usar o operador ‘+’ em SQL.

SELECT EmpId,Salary+Variable as TotalSalary FROM EmployeeSalary;

Ques.10Escreva uma consulta SQL para buscar os funcionários cujo nome comece com dois caracteres quaisquer, seguido por um texto “hn” e terminando com qualquer sequência de caracteres.
Ans. Para esta pergunta, podemos criar uma consulta SQL usando o operador ‘_’ e ‘%’ caracteres curinga, onde ‘_’ corresponde a um único caracter e ‘%’ corresponde a ‘0 ou vários caracteres’.

SELECT FullNameFROM EmployeeDetailsWHERE FullName LIKE '__hn%';

Ques.11Escreva uma consulta SQL para ir buscar todos os EmpIds presentes em qualquer uma das tabelas – ‘EmployeeDetails’ e ‘EmployeeSalary’.
Ans. A fim de obter ids únicos de empregados de ambas as tabelas, podemos usar a cláusula Union que pode combinar os resultados das duas consultas SQL e retornar linhas únicas.

SELECT EmpId FROM EmployeeDetailsUNION SELECT EmpId FROM EmployeeSalary;

Ques.12Escreva uma consulta SQL para buscar registros comuns entre duas tabelas.
Ans. SQL Server – Usando o operador INTERSECT-

SELECT * FROM EmployeeSalaryINTERSECTSELECT * FROM ManagerSalary;

MySQL – Como o MySQL não tem operador INTERSECT, podemos usar a subconsulta –

SELECT *FROM EmployeeSalaryWHERE EmpId IN (SELECT EmpId from ManagerSalary);

Ques.13Escreva uma consulta SQL para buscar registros que estão presentes em uma tabela mas não em outra tabela.
Ans. SQL Server – Usando o operador MINUS-

SELECT * FROM EmployeeSalaryMINUSSELECT * FROM ManagerSalary;

MySQL – Como o MySQL não tem o operador MINUS, podemos usar o operador LEFT join-

SELECT EmployeeSalary.*FROM EmployeeSalaryLEFT JOINManagerSalary USING (EmpId)WHERE ManagerSalary.EmpId IS NULL;

Ques.14Escreva uma consulta SQL para ir buscar os EmpIds que estão presentes em ambas as tabelas – ‘EmployeeDetails’ e ‘EmployeeSalary.
Ans. Usando a subconsulta –

SELECT EmpId FROM EmployeeDetails where EmpId IN (SELECT EmpId FROM EmployeeSalary);

Ques.15. Escreva uma consulta SQL para ir buscar os EmpIds que estão presentes em EmployeeDetails mas não em EmployeeSalary.
Ans. Usando a subconsulta –

SELECT EmpId FROM EmployeeDetails where EmpId Not IN (SELECT EmpId FROM EmployeeSalary);

Ques.16Escreva uma consulta SQL para ir buscar o nome completo do funcionário e substituir o espaço por ‘-‘.
Ans. Usando a função ‘Replace’-

SELECT REPLACE(FullName, ' ', '-') FROM EmployeeDetails;

Ques.17. Escreva uma consulta SQL para ir buscar a posição de um dado caractere(s) em um campo.
Ans. Usando a função ‘Instr’-

SELECT INSTR(FullName, 'Snow')FROM EmployeeDetails;

Ques.18Escreva uma consulta SQL para mostrar o EmpId e ManagerId juntos.
Ans. Aqui podemos usar o comando CONCAT.

SELECT CONCAT(EmpId, ManagerId) as NewIdFROM EmployeeDetails;

Ques.19. Escreva uma consulta para buscar apenas o primeiro nome (string antes do espaço) na coluna FullName da tabela EmployeeDetails.
Ans. Nesta questão, somos obrigados a buscar primeiro a localização do caractere de espaço no campo FullName e depois extrair o primeiro nome do campo FullName.
Para encontrar a localização vamos usar o método LOCATE no MySQL e CHARINDEX no SQL SERVER e para buscar a string antes do espaço, vamos usar o método SUBSTRING OU MID.
MySQL – usando MID

SELECT MID(FullName, 1, LOCATE(' ',FullName)) FROM EmployeeDetails;

SQL Server – usando SUBSTRING

SELECT SUBSTRING(FullName, 1, CHARINDEX(' ',FullName)) FROM EmployeeDetails;

Ques.20Escreva uma consulta SQL em maiúsculas o nome do funcionário e em minúsculas os valores da cidade.
Ans. Podemos usar as funções SQL Superior e Inferior para alcançar os resultados pretendidos.

SELECT UPPER(FullName), LOWER(City) FROM EmployeeDetails;

Ques.21. Escreva uma consulta SQL para encontrar a contagem do total de ocorrências de um determinado caracter – ‘n’ no campo FullName.
Ans. Aqui, podemos usar a função ‘Length’. Podemos subtrair o comprimento total do campo FullName com um comprimento do FullName após substituir o caractere – ‘n’.

SELECT FullName, LENGTH(FullName) - LENGTH(REPLACE(FullName, 'n', ''))FROM EmployeeDetails;

Ques.22. Escreva uma consulta SQL para atualizar os nomes dos funcionários, removendo os espaços inicial e final.
Ans. Usando o comando ‘Update’ com as funções ‘LTRIM’ e ‘RTRIM’.

UPDATE EmployeeDetails SET FullName = LTRIM(RTRIM(FullName));

Ques.23. Buscar todos os funcionários que não estão trabalhando em nenhum projeto.
Ans. Esta é uma das perguntas básicas de entrevista em que o entrevistador quer ver se a pessoa sabe sobre o comumente usado – É operador NULL.

SELECT EmpId FROM EmployeeSalary WHERE Project IS NULL;

Ques.24Escreva uma consulta SQL para buscar nomes de funcionários com salário maior ou igual a 5000 e menor ou igual a 10000.
Ans. Aqui, usaremos BETWEEN na cláusula ‘where’ para devolver o EmpId dos funcionários com salário que satisfaça os critérios exigidos e depois usá-lo como subquery para encontrar o nome completo do funcionário da tabela EmployeeDetails.

SELECT FullName FROM EmployeeDetails WHERE EmpId IN (SELECT EmpId FROM EmployeeSalary WHERE Salary BETWEEN 5000 AND 10000);

Ques.25. Escreva uma consulta SQL para encontrar a data/hora atual.
Ans. MySQL-

SELECT NOW();

SQL Server-

SELECT getdate();

Oracle-

SELECT SYSDATE FROM DUAL;

Ques.26Escreva uma consulta SQL para ir buscar todos os detalhes dos funcionários da tabela EmployeeDetails que se juntaram no Ano 2020.
Ans. Usando BETWEEN para o intervalo de datas ’01-01-2020′ E ’31-12-2020′-

SELECT * FROM EmployeeDetailsWHERE DateOfJoining BETWEEN ‘2020/01/01’AND ‘2020/12/31’;

Também, podemos extrair parte do ano da data de adesão (usando o ANO no mySQL)-

SELECT * FROM EmployeeDetails WHERE YEAR(DateOfJoining) = '2020';

Ques.27Escreva uma consulta SQL para ir buscar todos os registros de empregados da tabela EmployeeDetails que têm um registro salarial na tabela EmployeeSalary.
Ans. Usando ‘Exists’-

SELECT * FROM EmployeeDetails EWHERE EXISTS(SELECT * FROM EmployeeSalary S WHERE E.EmpId = S.EmpId);

Ques.28. Escreva uma consulta SQL para ir buscar a contagem dos empregados ordenados por projeto em ordem decrescente.
Ans. A consulta tem dois requisitos – primeiro para ir buscar a contagem por projeto e depois para ordenar o resultado por essa contagem.
Para a contagem por projeto, estaremos usando a cláusula GROUP BY e para a ordenação, usaremos a cláusula ORDER BY no alias do project-count.

SELECT Project, count(EmpId) EmpProjectCountFROM EmployeeSalaryGROUP BY ProjectORDER BY EmpProjectCount DESC;

Ques.29. Escreva uma consulta para ir buscar nomes de empregados e registros de salário. Exibir os detalhes do funcionário mesmo que o registro salarial não esteja presente para o funcionário.
Ans. Esta é novamente uma das perguntas muito comuns de entrevista em que o entrevistador só quer verificar os conhecimentos básicos de SQL JOINS.
Aqui, podemos usar a tabela EmployeeDetail do lado esquerdo da tabela EmployeeSalary.

SELECT E.FullName, S.Salary FROM EmployeeDetails E LEFT JOIN EmployeeSalary SON E.EmpId = S.EmpId;

Ques.30. Escreva uma consulta SQL para juntar 3 tabelas.
Ans. Considerando 3 tabelas TableA, TableB, e TableC, podemos usar 2 cláusulas de adesão como abaixo-

SELECT column1, column2FROM TableAJOIN TableB ON TableA.Column3 = TableB.Column3JOIN TableC ON TableA.Column4 = TableC.Column4;

Para mais perguntas sobre SQL Joins, você também pode verificar as nossas perguntas SQL Joins Interview.

Perguntas de Entrevista SQL para Profissionais Experientes

Aqui está a lista de algumas das perguntas mais frequentes de entrevistas SQL para profissionais experientes. Estas perguntas cobrem consultas SQL sobre conceitos avançados de SQL JOIN, buscar linhas duplicadas, linhas ímpares e pares, enésimo salário mais alto, etc.

Ques. 31. Escreva uma consulta SQL para ir buscar todos os Colaboradores que também são gestores da tabela EmployeeDetails.
Ans. Aqui, temos de usar o SelfJoin como requisito para analisarmos a tabela EmployeeDetails como duas tabelas. Usaremos diferentes apelidos ‘E’ e ‘M’ para a mesma tabela EmployeeDetails.

SELECT DISTINCT E.FullNameFROM EmployeeDetails EINNER JOIN EmployeeDetails MON E.EmpID = M.ManagerID;

Para saber mais sobre Self Join juntamente com mais algumas consultas, você pode assistir o vídeo abaixo que explica o conceito de Self Join de uma forma muito simples.

Self Join e sua Demonstração

Ques.32. Escreva uma consulta SQL para buscar registros duplicados de EmployeeDetails (sem considerar a chave primária – EmpId).
Ans. Para encontrar registros duplicados da tabela, podemos usar GROUP BY em todos os campos e depois usar a cláusula HAVING para retornar somente aqueles campos cuja contagem é maior que 1, ou seja, as linhas com registros duplicados.

SELECT FullName, ManagerId, DateOfJoining, City, COUNT(*)FROM EmployeeDetailsGROUP BY FullName, ManagerId, DateOfJoining, CityHAVING COUNT(*) > 1;

Ques.33 . Escreva uma consulta SQL para remover duplicatas de uma tabela sem usar uma tabela temporária.
Ans. Aqui, podemos usar o delete com alias e inner join. Vamos verificar a igualdade de todos os registros correspondentes e eles removem a linha com EmpId.

DELETE E1 FROM EmployeeDetails E1INNER JOIN EmployeeDetails E2 WHERE E1.EmpId > E2.EmpId AND E1.FullName = E2.FullName AND E1.ManagerId = E2.ManagerIdAND E1.DateOfJoining = E2.DateOfJoiningAND E1.City = E2.City;

Ques.34. Escreva uma consulta SQL para buscar apenas linhas ímpares da tabela.
Ans. Caso tenhamos um campo auto-incremental, por exemplo, EmpId, então podemos simplesmente usar a consulta abaixo –

SELECT * FROM EmployeeDetails WHERE MOD (EmpId, 2) <> 0;

No caso de não termos um campo desse tipo, então podemos usar as consultas abaixo.
Usar número_de_fileira no servidor SQL e verificar se o restante quando dividido por 2 é 1-

SELECT E.EmpId, E.Project, E.SalaryFROM ( SELECT *, Row_Number() OVER(ORDER BY EmpId) AS RowNumber FROM EmployeeSalary) EWHERE E.RowNumber % 2 = 1;

Usar uma variável definida pelo usuário no MySQL-

Ques.35. Escreva uma consulta SQL para buscar apenas linhas da tabela.
Ans. Caso tenhamos um campo auto-incremental, por exemplo, EmpId, então podemos simplesmente usar a consulta abaixo-

SELECT * FROM EmployeeDetails WHERE MOD (EmpId, 2) = 0;

No caso de não termos tal campo, então podemos usar as consultas abaixo.
Usar número_de_fileira no servidor SQL e verificar se o restante quando dividido por 2 é 1-

SELECT E.EmpId, E.Project, E.SalaryFROM ( SELECT *, Row_Number() OVER(ORDER BY EmpId) AS RowNumber FROM EmployeeSalary) EWHERE E.RowNumber % 2 = 0;

Usar uma variável definida pelo usuário no MySQL-

SELECT *FROM ( SELECT *, @rowNumber := @rowNumber+ 1 rn FROM EmployeeSalary JOIN (SELECT @rowNumber:= 0) r ) t WHERE rn % 2 = 0;

Ques.36. Escrever uma consulta SQL para criar uma nova tabela com dados e estrutura copiados de outra tabela.
Ans.

CREATE TABLE NewTable SELECT * FROM EmployeeSalary;

Ques.37 . Escreva uma consulta SQL para criar uma tabela vazia com a mesma estrutura que alguma outra tabela.
Ans. Aqui, podemos usar a mesma consulta como acima com a falsa condição ‘WHERE’ –

CREATE TABLE NewTable SELECT * FROM EmployeeSalary where 1=0;

Ques.38. Escreva uma consulta SQL para buscar os primeiros n registros?
Ans. No MySQL usando LIMIT-

SELECT *FROM EmployeeSalaryORDER BY Salary DESC LIMIT N;

No servidor SQL usando o comando TOP-

SELECT TOP N *FROM EmployeeSalaryORDER BY Salary DESC;

Ques.39. Escreva uma consulta SQL para encontrar o enésimo maior salário da tabela.
Ans, Using Top keyword (SQL Server)-

SELECT TOP 1 SalaryFROM ( SELECT DISTINCT TOP N Salary FROM Employee ORDER BY Salary DESC )ORDER BY Salary ASC;

Using limit clause(MySQL)-

SELECT SalaryFROM EmployeeORDER BY Salary DESC LIMIT N-1,1;

Ques.40. Escreva a consulta SQL para encontrar o terceiro maior salário de uma tabela sem usar a palavra-chave TOP/limit.
Ans. Esta é uma das perguntas mais comumente feitas em entrevistas. Para isso, vamos usar uma subconsulta correlata.
Para encontrar o 3º salário mais alto, vamos encontrar o valor do salário até que a consulta interna retorne uma contagem de 2 linhas tendo o salário maior que outros salários distintos.

SELECT SalaryFROM EmployeeSalary Emp1WHERE 2 = ( SELECT COUNT( DISTINCT ( Emp2.Salary ) ) FROM EmployeeSalary Emp2 WHERE Emp2.Salary > Emp1.Salary )

Para o n-ésimo salário mais alto-

SELECT SalaryFROM EmployeeSalary Emp1WHERE N-1 = ( SELECT COUNT( DISTINCT ( Emp2.Salary ) ) FROM EmployeeSalary Emp2 WHERE Emp2.Salary > Emp1.Salary )

>

Esta é a conclusão do nosso post sobre as perguntas e respostas da consulta SQL mais freqüente. Espero que estas perguntas o ajudem com as entrevistas da sua base de dados.
Se você se sentir, nós perdemos qualquer uma das perguntas comuns de entrevista então nos informe nos comentários e nós adicionaremos essas perguntas à nossa lista.
>

>

Veja nosso artigo sobre – Perguntas de Entrevista ao Banco de Dados, focando nas perguntas teóricas de entrevista baseadas nos conceitos do SGBD e SQL.

>

Kuldeep é o fundador e autor principal do ArtOfTesting. Ele é especializado em automação de testes, testes de desempenho, grandes dados e CI-CD. Ele traz sua década de experiência para seu papel atual onde ele é dedicado a educar os profissionais de GQ. Pode ligar-se a ele no LinkedIn.

Facebook WhatsApp LinkedIn Pinterest

Deixe uma resposta

O seu endereço de email não será publicado.