Förberedelser inför SQL-intervjun · Lektion

Beräknade kolumner och uttryckens prioritet

Aritmetik, sammanfogning och operatorprioritet i SELECT-listor

Lektion 2 av 413 steg

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.5

Operatorprioritet

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; -- 20

Prioritet 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.

Gratis att börja

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

  1. Projicera kolumner och fallgropar med alias
  2. Beräknade kolumner och uttryckens prioritet
  3. DISTINCT kontra GROUP BY för unikhet
  4. CASE-uttryck i SELECT
← Tillbaka till Förberedelser inför SQL-intervjun