Beräknade kolumner och uttryckens prioritet
Aritmetik, sammanfogning och operatorprioritet i SELECT-listor
Beräknade kolumner och uttryckens prioritet är en gratis lektion i Förberedelser inför SQL-intervjun på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Förberedelser inför SQL-intervjun, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Förberedelser inför SQL-intervjun innehåller totalt 4 lektioner.
Beräknade kolumner i SELECT
En beräknad kolumn är ett uttryck i SELECT som härleder ett värde i stället för att läsa det direkt – till exempel price * quantity. Ge den alltid ett tydligt alias.
SELECT product,
price,
quantity,
price * quantity AS line_total
FROM order_items;Aritmetiska operatorer
SQL har de matematiska operatorer som förväntas: +, -, *, / samt modulo. Resultatets typ följer operandernas typ – och där döljer sig nästa fallgrop.
SELECT 7 + 3 AS sum_val,
7 - 3 AS diff_val,
7 * 3 AS prod_val,
7 % 3 AS remainder;Fällan med heltalsdivision
Se upp: division av två heltal utför heltalsdivision, så 5 / 2 blir 2, inte 2.5. Lös det genom att omvandla ena sidan till decimal eller multiplicera med 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.5Operatorprioritet
SQL följer den vanliga matematiska prioritetsordningen: * och / körs före + och -. Därför blir 2 + 3 * 4 lika med 14, inte 20. Parenteser åsidosätter allt.
SELECT 2 + 3 * 4 AS no_parens, -- 14
(2 + 3) * 4 AS with_parens; -- 20Prioritet i en verklig rabattfråga
Prioritetsfel trivs i affärslogik. För ett rabatterat pris är price - price * rate korrekt eftersom * körs först. Kontrollera alltid att grupperingen som motorn faktiskt använder är rimlig.
SELECT price,
discount_rate,
price - price * discount_rate / 100 AS net_price
FROM products;Strängkonkatenering
Hur text sammanfogas beror på databasen: || i Postgres och enligt SQL-standarden, + i SQL Server och CONCAT() i MySQL. CONCAT() är det säkra, portabla valet.
-- 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 förgiftar aritmetiken
Det här är viktigt: all matematik med NULL ger NULL. Därför blir base_salary + bonus NULL för alla som saknar bonus. Omslut riskfyllda kolumner med COALESCE för att ange ett standardvärde.
SELECT base_salary,
bonus,
base_salary + bonus AS unsafe_total,
base_salary + COALESCE(bonus,0) AS safe_total
FROM employees;Konkatenering och NULL per dialekt
NULL påverkar även text, och dialekterna skiljer sig åt: Postgres gör att hela strängen försvinner, medan CONCAT i SQL Server behandlar NULL som tom text. Omslut varje del med COALESCE för ett förutsägbart resultat.
SELECT COALESCE(first_name,'') || ' ' || COALESCE(last_name,'') AS full_name
FROM employees;Funktioner i uttryck
Beräknade kolumner kan utan problem omsluta funktioner som ROUND, ABS eller UPPER. Ett funktionsanrop är bara ännu ett uttryck, så det kan nästlas direkt i matematiken.
SELECT product,
ROUND(price * quantity * 1.0, 2) AS line_total,
UPPER(product) AS product_caps
FROM order_items;Typkonvertering och CAST
När operandernas typer skiljer sig åt utför SQL en implicit typkonvertering som kan överraska. Var explicit med CAST(expr AS type) – intervjuare tolkar det som noggrann och defensiv kod.
SELECT 'Order #' || CAST(order_id AS VARCHAR) AS label
FROM orders;Booleska uttryck som kolumner
En jämförelse som price > 100 är själv ett uttryck. Postgres kan välja det som true/false, men det portabla svaret omsluter det i en CASE för att returnera 1/0 eller en etikett.
-- Portable
SELECT product,
CASE WHEN price > 100 THEN 1 ELSE 0 END AS is_pricey
FROM products;Snabb kontroll
Beräkna uttrycket.
Sammanfattning
Sammanfattning: ge dina beräknade kolumner alias. Konvertera till decimal vid decimaldivision, tänk på prioritetsordningen, använd CONCAT() för portabel text – och kom ihåg att NULL förgiftar matematiken, så skydda den med COALESCE.
Lär dig SQL med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Beräknade kolumner och uttryckens prioritet” gratis?
Ja – hela texten till ”Beräknade kolumner och uttryckens prioritet” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Förberedelser inför SQL-intervjun, kan Ni uppgradera till CoddyKit PRO. Kursen i Förberedelser inför SQL-intervjun innehåller totalt 4 lektioner.
Vad lär jag mig i ”Beräknade kolumner och uttryckens prioritet”?
Aritmetik, sammanfogning och operatorprioritet i SELECT-listor Ni övar på Förberedelser inför SQL-intervjun med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Förberedelser inför SQL-intervjun?
Du behöver inga förkunskaper. Utbildningen i Förberedelser inför SQL-intervjun på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Beräknade kolumner och uttryckens prioritet”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Förberedelser inför SQL-intervjun-lektionen?
Ja. Varje Förberedelser inför SQL-intervjun-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Projicera kolumner och fallgropar med alias
- Beräknade kolumner och uttryckens prioritet
- DISTINCT kontra GROUP BY för unikhet
- CASE-uttryck i SELECT