Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
40
Rozdział2:Zapytaniadopojedynczejtabeli
Oznaczato,żefazaGROUPBYtworzygrupędlakażdegounikatowegopołączeniawarto-
ściidentyfikatorapracownika(empid)irokuzamówienia,którepojawiająsięwdanych
zwracanychprzezfazęWHERE.WyrażenieYEAR(orderdate)wywołujefunkcjęYEAR,
byzkolumnyorderdatezwracaćtylkoczęśćdotyczącąroku.
FazaWHEREzwraca31wierszy
,wktórychwystępuje16niepowtarzającychsiękom-
binacjiwartościIDpracownikairokuzamówienia.
empid
---
--
1
1
1
2
2
2
3
4
4
5
6
6
7
7
8
9
YEAR(orderdate)
---
---
---
---
---
2020
2021
2022
2020
2021
2022
2021
2021
2022
2021
2021
2022
2021
2022
2021
2020
TakwięcfazaGROUPBYtworzy16grupiprzypisujekażdyz31wierszyzwracanych
przezfazęWHEREdoodpowiedniejgrupy
.
Jeślizapytanieobejmujetworzeniegrup,wszystkielogicznefazynastępujące
pofazieGROUPBYwtymHAVING,SELECTiORDERBYmusząoperowaćnagrupach,
anienaposzczególnychwierszach.Wostatecznychwynikachzapytaniakażdagru-
pajestwkońcureprezentowanaprzezpojedynczywiersz.Oznaczato,żewszyst-
kiewyrażeniawyspecyfikowanewklauzulachprzetwarzanychwkolejnychfazach
(pofazieGROUPBY)muszązagwarantowaćzwracaniewartościskalarnej(pojedynczej)
dlaposzczególnychgrup.
Wyrażeniabazującenaelementach,któreznajdująsięnaliścieGROUPBY,spełniają
wymagania,ponieważzgodniezdefinicjąkażdagrupamatylkojednoniepowtarzal-
newystąpieniekażdegoelementuGROUPBY.Naprzykładwgrupiedlapracownika
oidentyfikatorze8irokuzamówienia2021istniejetylkojednaunikatowawartość
IDpracownikaitylkojednaunikatowawartośćrokuzamówienia.Ztegowzględu
wklauzulachprzetwarzanychpofazieGROUPBY,takichjakklauzulaSELECT,możemy
odwoływaćsiędowyrażeńempidiYEAR(orderdate).Naprzykładponiższezapytanie
zwraca16wierszydla16grupwartościIDpracownikairokuzamówienia.
SELECTempid,YEAR(orderdate)ASorderyear
FROMSales.Orders
WHEREcustid=71
GROUPBYempid,YEAR(orderdate);