Gruppera och etikettera data
Förvandla värden till kategorier.
Gruppera och etikettera data är en gratis lektion i SQL Academy på CoddyKit. Detta är lektion 3 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 SQL Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i SQL Academy innehåller totalt 4 lektioner.
Vad är kategorisering?
Kategorisering innebär att råvärden grupperas i namngivna kategorier – tal, datum eller koder omvandlas till lättbegripliga etiketter.
I stället för att visa poängen 87 visar du "Bra". I stället för att visa åldern 14 visar du "Tonåring". CASE-uttrycket är ditt främsta verktyg för detta.
Exempeltabell: orders
Vi kommer att använda tabellen orders genom hela lektionen. Varje rad innehåller ett orderbelopp och en statuskod.
Kör frågan nedan för att se datan vi arbetar med.
SELECT id, customer, amount, status
FROM orders
ORDER BY id;Etikettering med CASE WHEN
Det enklaste mönstret för kategorisering kontrollerar ett villkor och tilldelar en etikett. Blocket CASE WHEN ... THEN ... ELSE ... END returnerar en ny sträng för varje rad.
Här etiketterar vi varje order som antingen 'Stor' eller 'Liten' baserat på beloppet.
SELECT id,
amount,
CASE
WHEN amount >= 500 THEN 'Large'
ELSE 'Small'
END AS order_size
FROM orders;Flera kategorier med WHEN-kedjor
Du kan lägga till så många WHEN-satser som behövs. SQL kontrollerar dem uppifrån och ned och stannar vid den första matchningen.
Det här exemplet delar upp beloppen i tre nivåer: Liten, Medelstor och Stor.
SELECT id,
amount,
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier
FROM orders;Kategorisera textvärden
Kategorier är inte bara till för tal. Du kan matcha exakta textvärden och ersätta dem med tydligare etiketter.
Här omvandlas de råa statuskoderna 'P', 'S' och 'C' till lättbegripliga ord.
SELECT id,
status,
CASE status
WHEN 'P' THEN 'Pending'
WHEN 'S' THEN 'Shipped'
WHEN 'C' THEN 'Cancelled'
ELSE 'Unknown'
END AS status_label
FROM orders;Använda formen Simple CASE
När du jämför en kolumn med flera fasta värden är formen Simple CASE (CASE column WHEN value ...) kortare och lättare att läsa än att upprepa kolumnnamnet i varje WHEN-sats.
Resultatet är identiskt med den sökta formen.
SELECT id,
CASE status
WHEN 'P' THEN 'Pending'
WHEN 'S' THEN 'Shipped'
WHEN 'C' THEN 'Cancelled'
ELSE 'Unknown'
END AS status_label
FROM orders;Kategorisering i GROUP BY
När du har en kategorietikett kan du gruppera efter den för att räkna hur många rader som hamnar i varje kategori. Kapsla in hela CASE-uttrycket i GROUP BY.
Den här frågan visar hur många beställningar som är Liten, Medelstor eller Stor.
SELECT
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier,
COUNT(*) AS total_orders
FROM orders
GROUP BY
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END;Kategorisering med ett alias från en underfråga
Att upprepa ett långt CASE-block i GROUP BY blir omständligt. Ett renare sätt är att kapsla in huvudfrågan i en underfråga (eller CTE), så att du kan referera till aliaset direkt.
SELECT order_tier, COUNT(*) AS total_orders
FROM (
SELECT
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier
FROM orders
) AS bucketed
GROUP BY order_tier;Numeriska kategorier: åldersgrupper
Åldersgruppering är ett klassiskt användningsområde för kategorisering. Frågan nedan tilldelar varje kund till ett namngivet åldersintervall.
Observera att villkoren går från lägst till högst – SQL stannar vid det första WHEN-villkoret som är sant, så ordningen spelar roll.
SELECT name,
age,
CASE
WHEN age < 13 THEN 'Child'
WHEN age < 18 THEN 'Teen'
WHEN age < 65 THEN 'Adult'
ELSE 'Senior'
END AS age_group
FROM customers;Etikettera NULL-värden i en kategori
Om ett värde är NULL matchar inget WHEN-villkor det, förutom IS NULL. Utan en uttrycklig kontroll faller NULL-värden vidare till ELSE-grenen.
Lägg till en WHEN column IS NULL-sats för att ge NULL-värden en egen etikett.
SELECT id,
amount,
CASE
WHEN amount IS NULL THEN 'No Data'
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier
FROM orders;Kategorisering i ORDER BY
Du kan också använda ett CASE-uttryck direkt i ORDER BY för att styra sorteringsprioriteten utan att lägga till en ny kolumn.
Exemplet nedan visar alltid väntande beställningar först, sedan skickade och därefter avbrutna.
SELECT id, customer, status
FROM orders
ORDER BY
CASE status
WHEN 'P' THEN 1
WHEN 'S' THEN 2
WHEN 'C' THEN 3
ELSE 4
END;Snabbtest
Testa dina kunskaper om att kategorisera och etikettera data med CASE.
Repetition av lektionen
Bra jobbat! Det här lärde du dig om att kategorisera och etikettera data:
- Kategorisering omvandlar råvärden till namngivna kategorier med hjälp av
CASE WHEN. - Kedjor av
WHEN-satser skapar flera kategorier; SQL stannar vid den första matchningen. - Formen Simple CASE (
CASE col WHEN val) passar bäst när en kolumn jämförs med fasta värden. - Du kan använda GROUP BY med ett
CASE-uttryck för att räkna raderna i varje kategori. - Hantera alltid
NULLuttryckligen medWHEN col IS NULLså att värdet får en meningsfull etikett. CASEfungerar också iORDER BYför att definiera en anpassad sorteringsprioritet.
Kategorisering gör rapporter mycket lättare att läsa genom att ersätta råa koder och tal med tydliga, beskrivande etiketter.
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
- 46
- Lektioner
- 183
Vanliga frågor
Är lektionen ”Gruppera och etikettera data” gratis?
Ja – hela texten till ”Gruppera och etikettera data” 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 SQL Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i SQL Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Gruppera och etikettera data”?
Förvandla värden till kategorier. Ni övar på SQL Academy 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 SQL Academy?
Du behöver inga förkunskaper. Utbildningen i SQL Academy 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 3 av 4.
Hur lång tid tar lektionen ”Gruppera och etikettera data”?
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 SQL Academy-lektionen?
Ja. Varje SQL Academy-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
- CASE-uttrycket
- Sökta kontra enkla CASE
- Gruppera och etikettera data
- CASE i ORDER BY och aggregat