Sortera efter uttryck och alias
Lär dig var aliasreferenser är tillåtna i ORDER BY och hur du sorterar efter beräknad logik
Sortera efter uttryck och alias är en gratis lektion i Förberedelse inför kodningsintervjuer på CoddyKit. Detta är lektion 4 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örberedelse inför kodningsintervjuer, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Förberedelse inför kodningsintervjuer innehåller totalt 4 lektioner.
ORDER BY är mer flexibelt än ni tror
Förvånansvärt många kandidater tror att ORDER BY bara kan referera till vanliga kolumner. I själva verket kan ni sortera efter uttryck, alias, kolumnpositioner och CASE-logik.
Intervjuare använder detta för att testa om ni förstår den logiska körordningen för frågor, eftersom ORDER BY körs efter SELECT. Det är precis därför alias fungerar här men inte i WHERE.
Varför alias är tillåtna i ORDER BY
Kom ihåg den logiska körordningen: FROM, WHERE, GROUP BY, HAVING, SELECT och sedan ORDER BY. Eftersom SELECT körs före ORDER BY finns kolumnaliasen som ni definierade i SELECT redan när ORDER BY beräknas.
Det är den exakta anledningen till att ett alias fungerar i ORDER BY men misslyckas i WHERE, en fråga som intervjuare gärna kopplar tillbaka till körordningen.
SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY annual_pay DESC;Sortering efter ett uttryck direkt
Ni kan också upprepa hela uttrycket i ORDER BY i stället för att använda aliaset. Båda varianterna är giltiga och resultatet blir identiskt.
Att använda aliaset är renare och undviker duplicerad logik, men vissa team föredrar det explicita uttrycket för tydlighetens skull. Båda svaren är godtagbara i en intervju, så länge ni kan motivera valet.
SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY salary * 12 DESC;Sortering efter kolumnposition (ordinal)
Ni kan sortera efter ordinalpositionen för ett objekt i SELECT-listan: ORDER BY 2 sorterar efter den andra valda kolumnen. Det är kortfattat men skört, eftersom en omordning av SELECT-listan tyst ändrar sorteringen.
Intervjutips: känn till att detta finns och att det i allmänhet avråds från i produktionskod av hänsyn till läsbarhet och säkerhet.
SELECT name, hire_date
FROM employees
ORDER BY 2 DESC;Sortering efter en beräknad CASE
Ett kraftfullt mönster är att sortera efter ett CASE-uttryck för att skapa en anpassad, icke-alfabetisk ordning. Här visar vi höginkomsttagare först genom att använda en härledd prioritet.
CASE skapar en sorteringsrankning som inte har någon egen kolumn; motorn beräknar den enbart för sorteringen.
SELECT name, salary
FROM employees
ORDER BY CASE WHEN salary >= 100000 THEN 0 ELSE 1 END,
salary DESC;Anpassad ordning för kategorier
Statuskolumner sorteras sällan på ett meningsfullt sätt alfabetiskt. "active, pending, closed" sorteras alfabetiskt som "active, closed, pending", vilket blir fel. Ett CASE-uttryck mappar varje värde till en avsiktlig rankning.
Detta är ett vanligt krav i rapporter och ett tydligt sätt att visa att ni kan styra ordningen utöver den naturliga sorteringen.
SELECT id, status
FROM orders
ORDER BY CASE status
WHEN 'active' THEN 1
WHEN 'pending' THEN 2
WHEN 'closed' THEN 3
ELSE 4
END;Sortering efter resultatet av en funktion
Alla skalära funktioner kan användas i ORDER BY. Ni kan till exempel sortera utan hänsyn till versaler och gemener med LOWER, sortera efter stränglängd eller efter en del av ett datum.
Observera: om en kolumn omsluts av en funktion vid sortering kan det hindra motorn från att använda ett index på kolumnen, precis som i WHERE.
SELECT name
FROM employees
ORDER BY LOWER(name) ASC;Alias och aggregat i GROUP BY-frågor
I en grupperad fråga sorterar ni ofta efter ett aggregat. Ni kan referera till aggregatets alias i ORDER BY, återigen eftersom SELECT körs först.
Frågan nedan räknar beställningar per kund och sorterar antalet fallande med aliaset order_count.
SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id
ORDER BY order_count DESC;Fallgropen med kollisioner mellan alias och namn
Ett specialfall som intervjuare gärna tar upp: vad händer om aliaset har samma namn som en riktig kolumn? De flesta motorer tolkar ett obestämt namn i ORDER BY som aliaset i SELECT-listan först, vilket kan överraska.
Om ni aliasar salary * 2 AS salary och sedan skriver ORDER BY salary sorterar ni efter det dubblerade värdet, inte efter den underliggande kolumnen. Undvik att återanvända kolumnnamn som alias för att slippa denna tvetydighet.
SELECT salary * 2 AS salary
FROM employees
ORDER BY salary;Kombinera uttryck och sorteringsriktningar
Ni kan kombinera allt detta i samma sats: först ett uttryck, sedan ett alias och därefter en vanlig kolumn, var och en med sin egen riktning. Exemplet sorterar först efter en beräknad bonusnivå fallande och sedan efter namn stigande som skiljekriterium.
Att lägga flera nycklar på detta sätt är ett standardinslag i riktiga rapportfrågor.
SELECT name, salary,
salary * 0.1 AS bonus
FROM employees
ORDER BY bonus DESC, name ASC;Portabilitetsförbehåll
Även om uttryck och alias i ORDER BY stöds brett finns det några saker att tänka på i intervjuer:
- Ordinalpositioner (
ORDER BY 2) ingår i standarden men avråds från. - Aliasens synlighet i
ORDER BYär konsekvent mellan de stora motorerna, till skillnad från iWHERE/HAVING. SELECT DISTINCTinnebär en begränsning: ni kan bara användaORDER BYmed uttryck som förekommer i SELECT-listan.
Snabbkontroll
Koppla aliasens synlighet till exekveringsordningen.
Sammanfattning
Sortering efter uttryck och alias:
ORDER BYaccepterar alias, råa uttryck, funktioner,CASE-logik och kolumnpositioner.- Alias fungerar eftersom
ORDER BYkörs efterSELECTi den logiska ordningen. - Använd
CASEför anpassad kategorisk sortering. - Undvik aliasnamn som krockar med riktiga kolumner för att förhindra tvetydighet.
- Funktioner i sorteringsnyckeln kan göra att index inte används.
Lär dig Förberedelse inför kodningsintervjuer 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
- 90
- Lektioner
- 360
Vanliga frågor
Är lektionen ”Sortera efter uttryck och alias” gratis?
Ja – hela texten till ”Sortera efter uttryck och alias” 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örberedelse inför kodningsintervjuer, kan Ni uppgradera till CoddyKit PRO. Kursen i Förberedelse inför kodningsintervjuer innehåller totalt 4 lektioner.
Vad lär jag mig i ”Sortera efter uttryck och alias”?
Lär dig var aliasreferenser är tillåtna i ORDER BY och hur du sorterar efter beräknad logik Ni övar på Förberedelse inför kodningsintervjuer 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örberedelse inför kodningsintervjuer?
Du behöver inga förkunskaper. Utbildningen i Förberedelse inför kodningsintervjuer 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 4 av 4.
Hur lång tid tar lektionen ”Sortera efter uttryck och alias”?
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örberedelse inför kodningsintervjuer-lektionen?
Ja. Varje Förberedelse inför kodningsintervjuer-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
- Sortering på flera kolumner och placering av NULL
- LIMIT, OFFSET och FETCH FIRST
- Returnera de översta N raderna tillförlitligt
- Sortera efter uttryck och alias