0Pricing
Coding Interview Prep · Aula

Colunas calculadas e precedência de expressões

Aritmética, concatenação e precedência de operadores em listas SELECT.

Colunas calculadas e precedência de expressões é uma aula grátis de Coding Interview Prep no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Coding Interview Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Coding Interview Prep inclui 4 aulas no total.

Colunas calculadas em SELECT

Uma coluna calculada é uma expressão em SELECT que deriva um valor em vez de lê-lo diretamente — como preço * quantidade. Sempre atribua a ela um apelido claro.

SELECT product,
       price,
       quantity,
       price * quantity AS line_total
FROM order_items;

Operadores aritméticos

O SQL tem os operadores matemáticos esperados: +, -, *, /, além do módulo. O tipo do resultado segue os operandos — e é aí que a próxima armadilha se esconde.

SELECT 7 + 3 AS sum_val,
       7 - 3 AS diff_val,
       7 * 3 AS prod_val,
       7 % 3 AS remainder;

A armadilha da divisão inteira

Cuidado: dividir dois inteiros faz divisão inteira, portanto 5 / 2 resulta em 2, não em 2,5. Corrija isso convertendo um dos lados para decimal com CAST ou multiplicando por 1,0.

SELECT 5 / 2          AS int_div,    -- 2
       5 * 1.0 / 2    AS real_div,   -- 2.5
       CAST(5 AS DECIMAL) / 2 AS cast_div; -- 2.5

Precedência dos operadores

O SQL segue a precedência matemática normal: * e / são executados antes de + e -. Portanto, 2 + 3 * 4 resulta em 14, não em 20. Os parênteses substituem todas as regras.

SELECT 2 + 3 * 4      AS no_parens,  -- 14
       (2 + 3) * 4    AS with_parens; -- 20

Precedência em uma consulta real de desconto

Erros de precedência adoram a lógica de negócios. Para um preço com desconto, price - price * rate está correto porque * é executado primeiro. Sempre verifique se o agrupamento usado pelo mecanismo é realmente o esperado.

SELECT price,
       discount_rate,
       price - price * discount_rate / 100 AS net_price
FROM products;

Concatenação de texto

A junção de texto depende do banco de dados: || no Postgres e no SQL padrão, + no SQL Server e CONCAT() no MySQL. CONCAT() é a opção segura e portável.

-- Postgres / standard
SELECT first_name || ' ' || last_name AS full_name
FROM employees;

-- Portable
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM employees;

NULL contamina a aritmética

Um ponto importante: qualquer operação matemática com NULL resulta em NULL. Assim, salário_base + bônus resulta em NULL para quem não tem bônus. Envolva as colunas arriscadas em COALESCE para fornecer um valor padrão.

SELECT base_salary,
       bonus,
       base_salary + bonus            AS unsafe_total,
       base_salary + COALESCE(bonus,0) AS safe_total
FROM employees;

Concatenação e NULL por dialeto

NULL também afeta o texto, e os dialetos diferem: o Postgres faz toda a cadeia desaparecer, enquanto CONCAT do SQL Server trata NULL como vazio. Envolva cada parte em COALESCE para obter uma saída previsível.

SELECT COALESCE(first_name,'') || ' ' || COALESCE(last_name,'') AS full_name
FROM employees;

Funções dentro de expressões

As colunas calculadas podem envolver tranquilamente funções como ROUND, ABS ou UPPER. Uma chamada de função é apenas mais uma expressão, portanto pode ser aninhada diretamente nos seus cálculos.

SELECT product,
       ROUND(price * quantity * 1.0, 2) AS line_total,
       UPPER(product)                   AS product_caps
FROM order_items;

Coerção de tipos e CAST

Quando os tipos dos operandos diferem, o SQL faz uma coerção implícita que pode surpreender. Seja explícito com CAST(expressão AS tipo) — os entrevistadores interpretam isso como código cuidadoso e defensivo.

SELECT 'Order #' || CAST(order_id AS VARCHAR) AS label
FROM orders;

Expressões booleanas como colunas

Uma comparação como preço > 100 também é uma expressão. O Postgres pode selecioná-la como verdadeiro/falso, mas a resposta portável envolve-a em um CASE para produzir 1/0 ou um rótulo.

-- Portable
SELECT product,
       CASE WHEN price > 100 THEN 1 ELSE 0 END AS is_pricey
FROM products;

Verificação rápida

Avalie a expressão.

Recapitulação

Recapitulando: atribua apelidos às suas colunas calculadas. Use CAST para divisão decimal, preste atenção à precedência, use CONCAT() para obter texto portável — e lembre-se de que NULL contamina os cálculos, portanto proteja-os com COALESCE.

Perguntas Frequentes

A aula “Colunas calculadas e precedência de expressões” é grátis?

Sim — o texto completo de “Colunas calculadas e precedência de expressões” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Coding Interview Prep, atualize para CoddyKit PRO. O curso de Coding Interview Prep inclui 4 aulas no total.

O que vou aprender em “Colunas calculadas e precedência de expressões”?

Aritmética, concatenação e precedência de operadores em listas SELECT. Você pratica Coding Interview Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Coding Interview Prep?

Nenhuma experiência prévia é necessária. Coding Interview Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Colunas calculadas e precedência de expressões”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Coding Interview Prep?

Sim. Cada aula de Coding Interview Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Projetando colunas e armadilhas de alias
  2. Colunas calculadas e precedência de expressões
  3. DISTINCT versus GROUP BY para exclusividade
  4. Expressões CASE em SELECT
← Voltar para Coding Interview Prep