28th Feb 2025 8 minutos de leitura 10 exercícios sobre NULL para iniciantes Ekre Ceannmor null práticas sql Índice Conheça os dados Exercícios de SQL NULL 1. Líderes de equipe 2. Departamentos estabelecidos 3. Bônus ausentes 4. Bônus pequenos 5. Funcionários on-line 6. Funcionários e regiões 7. Contagem regional de funcionários 8. Relação entre bônus e salário 9. Número de funcionários do departamento 10. Funções por departamento Está com sede de mais exercícios práticos sobre SQL NULL? Quer praticar a manipulação de valores NULL em suas consultas? Confira estes 10 novos exercícios práticos sobre NULL! Dominar o SQL requer muita prática. Embora o aprendizado da teoria seja importante, a prática é uma das melhores maneiras de manter suas habilidades em SQL atualizadas. Neste artigo, apresentamos 10 exercícios de NULL para você analisar, com soluções e explicações completas. Lidar com NULLs pode pegar os iniciantes em SQL desprevenidos. O NULL não se comporta como os dados normais; ele representa a ausência total de informações, o que pode dificultar sua compreensão em um primeiro momento. Os exercícios de SQL a seguir o ajudarão a aprimorar suas habilidades no tópico de NULLs. Abordaremos todas as complexidades do trabalho com NULLs e praticaremos uma ampla gama de casos de uso que envolvem dados ausentes. E se você quiser praticar um pouco mais depois disso - não apenas com NULLs, mas com todo o SQL - experimente a nossa Trilha de Práticas em SQL . Ela tem mais de 1250 exercícios práticos para ajudá-lo a dominar o SQL. E como tudo acontece em seu navegador, não há nada para configurar ou fazer download. Pronto para alguns exercícios práticos de SQL NULL? Vamos mergulhar de cabeça! Conheça os dados Para este conjunto de exercícios, usaremos duas tabelas: employee e department. Dê uma olhada em alguns dados de amostra de cada tabela: employee idnamesalarybonuspositiondepartment_idmanager_id 1John Doe55001250CEO1NULL 2Jane Doe47501100CTO1NULL 3Mike Johnson2900NULLHead Accountant2NULL 4Sarah Brown23500Accountant23 5James Clark2500NULLHead of Marketing3NULL 6Emily Davis3100NULLSoftware Developer42 Na tabela employee, algumas colunas podem ter valores ausentes (NULL). Por exemplo, manager_id é NULL para todos os funcionários que não têm outro funcionário supervisionando-os (ou seja, o próprio gerente). E as informações salary e bonus podem estar ausentes caso não se apliquem a esse funcionário específico. department idnameregion 1Executive TeamCentral Hub 2AccountingNorthwest 3SalesWest Coast 4DevelopmentNULL Na tabela department tabela, apenas a região pode ser NULL. Isso indica que o departamento opera on-line. Voltaremos a esse assunto nos exercícios. Exercícios de SQL NULL 1. Líderes de equipe Exercício: Exibir informações sobre todos os líderes de equipe (ou seja, funcionários que não têm um manager_id). Solução: SELECT * FROM employee WHERE manager_id IS NULL; Explicação: Para filtrar os funcionários que não têm um manager_id, precisamos usar o operador IS NULL. O uso de operadores regulares como = ou != com NULLs não funciona como esperado no SQL. Se você usá-los, o resultado será sempre NULL e a condição WHERE falhará. Se quiséssemos mostrar todos os funcionários que não são líderes de equipe, a condição de filtragem seria WHERE manager_id IS NOT NULL. Você pode ler mais sobre o que são NULLs e como eles funcionam em NULLs and Handling Missing Data in SQL. 2. Departamentos estabelecidos Exercício: Exiba todos os departamentos físicos (ou seja, aqueles que têm um valor de região). Os departamentos sem uma região operam on-line. Solução: SELECT * FROM department WHERE region IS NOT NULL; Explicação: Use o mesmo princípio de filtragem que discutimos no exercício anterior. Nesse caso, você precisará usar o operador IS NOT NULL. 3. Bônus ausentes Exercício: Exibir o número de funcionários que têm um bônus faltante. Solução: SELECT COUNT(*) FROM employee WHERE bonus IS NULL; Explicação: Filtre os funcionários sem bônus usando o operador IS NULL. Use a função de agregação COUNT() para contar o número de funcionários sem bônus. Observação: Certifique-se de usar o argumento adequado para a função COUNT(), pois COUNT(bonus) WHERE bonus IS NULL sempre retornará 0. 4. Bônus pequenos Exercício: Exiba todos os funcionários que receberam um bônus menor que 300, incluindo os funcionários que não têm bônus registrado. Mostre primeiro os funcionários sem bônus registrado e, em seguida, ordene-os do menor para o maior bônus. Solução: SELECT * FROM employee WHERE bonus < 300 OR bonus IS NULL ORDER BY bonus NULLS FIRST; Explicação: Aqui, a condição é dividida em duas partes: Bônus menores que 300 e Bônus ausentes. Podemos usar o operador < (menor que) na primeira parte, mas a segunda parte precisará do operador IS NULL. Lembre-se de que NULL não é "maior" ou "menor" que 300, portanto, você precisa usar especificamente IS NULL. Junte as duas condições com o operador OR. Para classificar as linhas por bônus, use uma cláusula ORDER BY. Por padrão, as linhas serão classificadas em ordem crescente (ou seja, do menor para o maior bônus). Para especificar explicitamente que as linhas NULL devem vir primeiro no resultado, use a cláusula NULLS FIRST. 5. Funcionários on-line Exercício: Encontre todos os funcionários que trabalham em departamentos remotos (ou seja, aqueles em que a região é NULL). Exiba o nome do funcionário e o nome do departamento. Solução: SELECT employee.name AS employee, department.name AS department FROM employee JOIN department ON employee.department_id = department.id WHERE department.region IS NULL; Explicação: Junte os campos employee e department para obter acesso às tabelas do funcionário e do departamento name. Renomeie as colunas com a palavra-chave AS para evitar nomes duplicados. Em seguida, filtre o resultado pelo region do departamento, mantendo apenas as linhas em que a região é IS NULL. 6. Funcionários e regiões Exercício: Para cada funcionário, exiba o nome dele, o nome do departamento atribuído e a região em que o departamento está localizado. Para os funcionários de departamentos com uma região ausente, exiba ‘Online’ como a região. Solução: SELECT employee.name AS employee, department.name AS department, COALESCE(region, ‘Online’) AS region FROM employee JOIN department ON employee.department_id = department.id; Explicação: Para exibir o nome do funcionário, o nome do departamento e a região, junte as tabelas. Os funcionários em departamentos sem uma região terão NULL como o valor dessa coluna. Para substituir isso, podemos usar a função COALESCE(): ela manterá os valores não nulos, mas substituirá os NULLs no resultado por um novo valor que fornecemos (‘Online’). Se quiser saber mais sobre como essa função funciona, consulte nosso artigo sobre a função COALESCE(). 7. Contagem regional de funcionários Exercício: Exiba todas as regiões do banco de dados juntamente com o número de funcionários que trabalham nessa região. Mostre ‘Online’ como a região para os funcionários que não têm uma. Solução: SELECT COALESCE(region, ‘Online’) AS region, COUNT(*) FROM employee JOIN department ON employee.department_id = department.id GROUP BY region; Explicação: Junte os employee e department tabelas. Assim como no último exercício, use a função COALESCE() para substituir as regiões ausentes por "Online". Adicione a função de agregação COUNT() para obter o número de funcionários em cada região e, em seguida, agrupe o resultado pela coluna region. Observação: Não há necessidade de usar COALESCE() na cláusula GROUP BY. COALESCE() substitui todos os NULLs pelo mesmo valor, de modo que o número de grupos e as linhas neles permanecem inalterados. 8. Relação entre bônus e salário Exercício: Para cada funcionário, exiba o nome dele e a relação entre o bônus e o salário. Se o bônus for 0, exiba NULL em vez disso. Solução: SELECT name, NULLIF(bonus, 0) / salary AS ratio FROM employee; Explicação: Ao calcular a proporção entre o salário e o bônus, lembre-se de que o bônus pode ser 0 e não queremos exibir 0 no resultado final. Para evitar isso, podemos usar a função NULLIF() com a coluna de bônus. Essa função verifica se o bônus é 0; se for, ela substitui o 0 por NULL. Qualquer operação aritmética que inclua NULL resultará no retorno de NULL. Portanto, se o bônus for NULL, a proporção também será NULL. 9. Número de funcionários do departamento Exercício: Para cada departamento, conte o número de funcionários que trabalham nele. Inclua todos os departamentos, mesmo aqueles que não têm funcionários atribuídos a eles. Ignore os funcionários sem um departamento. Solução: SELECT department.name AS department, COUNT(employee.id) AS employees FROM department LEFT JOIN employee ON department.id = employee.department_id GROUP BY department.name, department.id; Explicação: Junte os campos department e employee tabelas. Para garantir que os departamentos sem funcionários sejam mostrados no resultado, use LEFT JOIN e coloque a tabela department primeiro. Conte os IDs dos funcionários para evitar a contagem de linhas NULL e agrupe o resultado pelo nome do departamento e id (caso dois departamentos tenham o mesmo nome). 10. Funções por departamento Exercício: Exiba o nome de cada departamento, a região e o número de funções diferentes dentro dele. Certifique-se de que haja uma seção "não atribuído" para os funcionários sem um departamento atribuído. Solução: SELECT COALESCE(department.name, ‘unassigned’) AS department, region, COUNT(DISTINCT position) AS different_positions FROM department FULL OUTER JOIN employee ON employee.department_id = department.id GROUP BY department.region, department.name, department.id Explicação: Junte as seções department e employee usando um FULL OUTER JOIN para garantir que os departamentos sem funcionários e os funcionários sem departamentos sejam mostrados. A ordem das tabelas não importa aqui. Para lidar com funcionários sem um departamento, use a função COALESCE() para substituir o nome do departamento por ‘unassigned’. Conte o número de posições diferentes em cada departamento usando COUNT(DISTINCT position). Você pode saber mais sobre o uso da palavra-chave DISTINCT em nosso artigo do livro de receitas. Agrupe o resultado por região, nome e id do departamento. Observe que "unassigned" é um dos grupos resultantes. Está com sede de mais exercícios práticos sobre SQL NULL? Muito bem! Você aprendeu um pouco sobre como lidar com NULLs no SQL! Se quiser mais exercícios práticos, confira nossa extensa Trilha de Práticas em SQL . Além de NULLs, ela aborda todos os tópicos existentes para ajudá-lo a manter suas habilidades em SQL afiadas. Boa prática! Tags: null práticas sql