GROUP BY -Lauseke
Tervetuloa Keskitaso SQL -kurssille!
Ensimmäisessä osiossa sukellamme siihen, miten voimme ryhmitellä ja yhdistää tietoja taulukoissamme.
Ymmärretään, mitä "tietojen ryhmittely" tarkoittaa yksinkertaisen esimerkin avulla työntekijöiden taulukosta:
Tietojen ryhmittely
Meillä on tehtävä selvittää, kuinka monta työntekijää on kussakin osastossa. Tätä varten ryhmittelemme tiedot department
-sarakkeen mukaan ja käytämme aggregointia COUNT(*)
-funktion kanssa.
Tältä toteutus näyttää:
SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Joten, kuten näet, syntaksi tietojen ryhmittelyyn näyttää tältä:
sql
Huom
AGG_FUNC
tarkoittaa aggregaattifunktioita kutenMAX
,MIN
,COUNT
, jne.
Tämä syntaksi on olemassa löytääkseen tiettyjä arvoja käyttämällä aggregaattifunktioita tietyissä sarakkeissa.
Katsotaanpa toista esimerkkiä: meille on annettu tehtäväksi löytää osasto, jolla on korkein keskipalkka.
Tällaisten tietojen hakemiseksi meidän on ryhmiteltävä tiedot department
-sarakkeen mukaan ja käytettävä sitten AVG()
-funktiota keskipalkan laskemiseen:
SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
Tässä osassa käsittelemme Montrealin metrojärjestelmän tietokantaa, joka sisältää metro_travel_time
taulukon.
Tämä taulukko sisältää tietoa asemalinjasta (line_name
), sen nimestä (station_name
) ja ajan määrästä, joka junalta kestää matkustaa asemalta seuraavalle (time_to_next_station
).
Tältä tämä taulukko näyttää ja sen datan esikatselu:
Kuten näet, tämä ei ole monimutkainen taulukko. Mietitään, missä voimme käyttää ryhmittelyä tässä.
Ilmeisin vaihtoehto on ryhmittely metrolinjojen värien mukaan. Tämä tarkoittaa, että voimme yhdistää dataa ryhmittelemällä sen metrolinjan värin mukaan.
Alias
Tehtävissä käytät usein käsitettä nimeltä alias. Alias on käytännössä "lempinimi" sarakkeelle, jonka haet SELECT
-lauseella. Se määritellään seuraavalla syntaksilla:
sql
Alias vaikuttaa vain siihen, miten sarake näkyy vastauksessa.
Esimerkiksi, MAX(time)
sijaan saraketta voitaisiin kutsua max_time
, jos määrität sille tämän aliaksen. Tämä tekee tulosteesta luettavamman ja selkeämmän.
Swipe to start coding
Tehtäväsi on löytää pisin aika seuraavalle asemalle jokaisella linjalla. Tämä auttaa meitä määrittämään pisimmän matkustusajan asemien välillä jokaiselle metro-linjalle. Tämän tekemiseksi käytä MAX()
-funktiota ja anna sille alias max_time
, ryhmittelemällä tiedot line_name
-sarakkeen mukaan.
Lyhyet ohjeet
- Hae
line_name
-sarake jatime_to_next_station
-sarakkeen maksimiarvo. - Lisää alias
max_time
maksimiarvolle. - Ryhmittele tiedot
line_name
-sarakkeen mukaan.
Kun olet suorittanut tämän tehtävän, napsauta -painiketta koodin alapuolella tarkistaaksesi ratkaisusi.
Ratkaisu
Kiitos palautteestasi!