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.5Precedê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; -- 20Precedê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
- Projetando colunas e armadilhas de alias
- Colunas calculadas e precedência de expressões
- DISTINCT versus GROUP BY para exclusividade
- Expressões CASE em SELECT