Lajittelu lausekkeiden ja aliasten perusteella
Missä aliasviittaukset ovat sallittuja ORDER BY -lausekkeessa ja miten lajitellaan lasketun logiikan perusteella
Lajittelu lausekkeiden ja aliasten perusteella on ilmainen Valmistautuminen ohjelmointihaastatteluihin-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Valmistautuminen ohjelmointihaastatteluihin-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Valmistautuminen ohjelmointihaastatteluihin-kurssilla on yhteensä 4 oppituntia.
ORDER BY on luultua joustavampi
Yllättävän moni hakija uskoo, että ORDER BY voi viitata vain tavallisiin sarakkeisiin. Todellisuudessa voit lajitella lausekkeiden, aliasten, sarakepaikkojen ja CASE-logiikan perusteella.
Haastattelijat käyttävät tätä testatakseen, ymmärrätkö kyselyn loogisen suoritusjärjestyksen, sillä ORDER BY suoritetaan SELECT-lauseen jälkeen. Juuri siksi aliakset toimivat tässä mutta eivät WHERE-lausekkeessa.
Miksi aliakset ovat sallittuja ORDER BY -lausekkeessa
Palauta mieleen looginen suoritusjärjestys: FROM, WHERE, GROUP BY, HAVING, SELECT ja lopuksi ORDER BY. Koska SELECT suoritetaan ennen ORDER BY-lauseketta, SELECT-lausekkeessa määritellyt sarakealiakset ovat jo olemassa, kun ORDER BY arvioidaan.
Juuri tästä syystä alias toimii ORDER BY-lausekkeessa mutta ei WHERE-lausekkeessa. Haastattelijat yhdistävät tämän mielellään suoritusjärjestystä koskevaan kysymykseen.
SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY annual_pay DESC;Lajittelu raakalausekkeen perusteella
Koko lausekkeen voi myös toistaa ORDER BY-lausekkeessa aliaksen käyttämisen sijaan. Molemmat ovat kelvollisia, ja tulos on sama.
Aliaksen käyttö on selkeämpää ja välttää logiikan toistamisen, mutta jotkin tiimit suosivat eksplisiittistä lauseketta selkeyden vuoksi. Haastattelussa kumpikin vastaus hyväksytään, kunhan valinta perustellaan.
SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY salary * 12 DESC;Lajittelu sarakepaikan perusteella (ordinal)
Voit lajitella SELECT-luettelon alkion järjestysnumeron perusteella: ORDER BY 2 lajittelee toisena valitun sarakkeen mukaan. Menetelmä on tiivis mutta hauras, koska SELECT-luettelon järjestyksen muuttaminen muuttaa lajittelua huomaamatta.
Haastatteluvinkki: on hyvä tietää, että tämä on mahdollista, mutta tuotantokoodissa sitä yleensä vältetään luettavuuden ja turvallisuuden vuoksi.
SELECT name, hire_date
FROM employees
ORDER BY 2 DESC;Lajittelu lasketun CASE-lausekkeen perusteella
Tehokas malli on lajitella CASE-lausekkeen perusteella, jotta voidaan määrittää mukautettu, ei-aakkosellinen järjestys. Tässä nostamme parhaiten ansaitsevat ensin johdetun prioriteetin avulla.
CASE tuottaa lajittelusijan, jolle ei ole omaa saraketta; moottori arvioi sen yksinomaan lajittelua varten.
SELECT name, salary
FROM employees
ORDER BY CASE WHEN salary >= 100000 THEN 0 ELSE 1 END,
salary DESC;Mukautettu luokkien järjestys
Tilaa kuvaavat sarakkeet harvoin lajittelevat mielekkäästi aakkosjärjestyksessä. "active, pending, closed" aakkostuu muotoon "active, closed, pending", mikä on väärin. CASE yhdistää kunkin arvon tarkoituksellisesti määritettyyn sijoitukseen.
Tämä on yleinen raportointivaatimus ja selkeä tapa osoittaa, että järjestystä voi hallita luonnollista lajittelua monipuolisemmin.
SELECT id, status
FROM orders
ORDER BY CASE status
WHEN 'active' THEN 1
WHEN 'pending' THEN 2
WHEN 'closed' THEN 3
ELSE 4
END;Lajittelu funktion palauttaman arvon perusteella
Mikä tahansa skalaariarvoinen funktio toimii ORDER BY-lausekkeessa. Voit esimerkiksi lajitella kirjainkoosta riippumatta käyttämällä LOWER-funktiota tai lajitella merkkijonon pituuden tai päivämäärän osan perusteella.
Huomaa: sarakkeen kääriminen funktion sisään lajittelun aikana voi estää moottoria käyttämästä kyseisen sarakkeen indeksiä, aivan kuten WHERE-lausekkeessa.
SELECT name
FROM employees
ORDER BY LOWER(name) ASC;Aliakset ja aggregaatit GROUP BY -kyselyissä
Ryhmitellyssä kyselyssä lajitellaan usein aggregaatin perusteella. Aggregaatin aliakseen voi viitata ORDER BY-lausekkeessa, jälleen siksi, että SELECT suoritetaan ensin.
Alla oleva kysely laskee tilaukset asiakasta kohden ja lajittelee määrän laskevasti käyttäen aliasta order_count.
SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id
ORDER BY order_count DESC;Aliaksen ja sarakkeen nimen törmäyksen sudenkuoppa
Haastattelijoiden suosima erikoistapaus: entä jos aliaksella on sama nimi kuin todellisella sarakkeella? Useimmat moottorit tulkitsevat paljaan nimen ORDER BY-lausekkeessa ensisijaisesti valintaluettelon aliakseksi, mikä voi yllättää.
Jos annat lausekkeelle salary * 2 AS salary aliakseksi nimen salary ja käytät sitten ORDER BY salary, lajittelet kaksinkertaistetun arvon etkä alla olevan sarakkeen perusteella. Vältä sarakenimien käyttämistä uudelleen aliaksina, jotta tämä epäselvyys ei synny.
SELECT salary * 2 AS salary
FROM employees
ORDER BY salary;Lausekkeiden ja lajittelusuuntien yhdistäminen
Voit yhdistää kaikki nämä samassa lausekkeessa: ensin lausekkeen, sitten aliaksen ja lopuksi tavallisen sarakkeen, joilla kullakin on oma lajittelusuuntansa. Esimerkissä lajitellaan lasketun bonusluokan mukaan laskevasti ja sitten nimen mukaan nousevasti tasatilanteen ratkaisijana.
Tällaisten lajitteluavainten ketjuttaminen on todellisten raportointikyselyiden perusasia.
SELECT name, salary,
salary * 0.1 AS bonus
FROM employees
ORDER BY bonus DESC, name ASC;Siirrettävyyttä koskevat huomautukset
Vaikka lausekkeita ja aliaksia tuetaan ORDER BY-lausekkeessa laajasti, haastatteluissa kannattaa huomioida muutama seikka:
- Järjestysnumerot (
ORDER BY 2) ovat standardin mukaisia, mutta niitä ei suositella. - Aliasten näkyvyys
ORDER BY-lausekkeessa on yhtenäinen tärkeimmissä moottoreissa toisin kuinWHERE/HAVING-lausekkeissa. SELECT DISTINCTasettaa rajoituksen:ORDER BY-lausekkeessa voi käyttää vain valintaluettelossa esiintyviä lausekkeita.
Pikatarkistus
Yhdistä aliasten näkyvyys suoritusjärjestykseen.
Kertaus
Lajittelu lausekkeiden ja aliasten perusteella:
ORDER BYhyväksyy aliakset, raakailmaukset, funktiot,CASE-logiikan ja järjestysnumerot.- Aliakset toimivat, koska loogisessa käsittelyjärjestyksessä
ORDER BYsuoritetaanSELECT-lauseen jälkeen. - Käyttäkää
CASE-lausetta mukautettuun kategoriseen järjestykseen. - Välttäkää aliaksia, joiden nimet ovat samat kuin todellisten sarakkeiden nimet, jotta epäselvyyksiltä vältytään.
- Lajitteluavaimen funktiot voivat estää indeksin käytön.
Opi Valmistautuminen ohjelmointihaastatteluihin tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 90
- Oppitunnit
- 360
Usein kysytyt kysymykset
Onko oppitunti ”Lajittelu lausekkeiden ja aliasten perusteella” ilmainen?
Kyllä – oppitunnin ”Lajittelu lausekkeiden ja aliasten perusteella” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Valmistautuminen ohjelmointihaastatteluihin-kurssin, päivitä CoddyKit PROhon. Valmistautuminen ohjelmointihaastatteluihin-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Lajittelu lausekkeiden ja aliasten perusteella”?
Missä aliasviittaukset ovat sallittuja ORDER BY -lausekkeessa ja miten lajitellaan lasketun logiikan perusteella Harjoittelet Valmistautuminen ohjelmointihaastatteluihin-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Valmistautuminen ohjelmointihaastatteluihin-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Valmistautuminen ohjelmointihaastatteluihin-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Lajittelu lausekkeiden ja aliasten perusteella”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Valmistautuminen ohjelmointihaastatteluihin-oppitunnilla?
Kyllä. Jokainen Valmistautuminen ohjelmointihaastatteluihin-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Monisarakkeinen lajittelu ja NULL-arvojen sijoittelu
- LIMIT, OFFSET ja FETCH FIRST
- Top-N-rivien luotettava palauttaminen
- Lajittelu lausekkeiden ja aliasten perusteella