Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Przedsmakrozwiązańwykorzystującychfunkcjeokna
21
Zanimzaprezentujęrozwiązanieopartenafunkcjachokna,pokażęjednozrozwią-
zańwykorzystującychbardziejtradycyjnekonstrukcjejęzykowe.Zaczniemyodmeto-
dyopartejnakwerendachpodrzędnych.Abyzrozumiećstrategiępierwszegorozwiąza-
nia,przeanalizujmywartościwsekwencjiT1.col1,doktórejdodamyatrybutlogiczny
,
któryjeszczenieistniejeiktórybędziepełniłrolęidentyfikatoragrupy:
col1
2
3
11
12
13
27
33
34
35
42
-----
grp
a
a
b
b
b
c
d
d
d
e
---
Atrybutgrpjeszczenieistnieje.Jegowartośćsłużyćbędziedoidentyfikowaniawysp.
Tooznacza,żemusibyćonjednakowydlawszystkichczłonkówtejsamejwyspy
iróżnyodwartościprzypisanychinnymwyspom.Gdyudanamsięwygenerować
spełniającytewarunkiidentyfikatorgrupy
,będziemymoglipogrupowaćdanewyni-
kowewedługatrybutugrpizwrócićwartościmaksymalneorazminimalnekolumny
col1wkażdejzgrup(wysp).Jedenzesposobówgenerowaniaidentyfikatoragrupy
przyużyciutradycyjnychkonstrukcjijęzykowychpoleganawyliczeniudlakażdej
bieżącejwartościcol1minimalnejwartościcol1,którajestwiększalubrównabieżącej
iniemakolejnejwartości.
Naprzykładdlawartości2minimalnawartośćkolumnycol1,którajestwiększalub
równa2iktórapojawiasiętużprzedbrakującąwartością,wynosi3.Gdyprzeprowa-
dzimytesameobliczeniadlawartości3,równieżotrzymamywartość3.Wzwiązku
ztymliczba3stanowiidentyfikatorgrupydlawyspy
,którarozpoczynasięodwartości
2ikończynawartości3.Dlawyspyrozpoczynającejsięodwartości11ikończącej
wartością13identyfikatorgrupydlawszystkichnależącychdoniejelementówwyno-
si13.Jakwidzimy
,identyfikatoremgrupydlawszystkichelementówwchodzących
wskładdanejwyspyjestostatnielementtejwyspy
.
OtokodT-SQLimplementującykoncepcję:
SELECTcol1,
(SELECTMIN(Bicol1)
FROMdboiT1ASB
WHEREBicol1>=Aicol1
--czytoostatniwierszwtejgrupie?
ANDNOTEXISTS
(SELECT*
FROMdboiT1ASC