T-SQL, hiányosságok és tartományok

A probléma megtalálásának hiányosságok és a tartományok SQL gyakran szükséges, hogy megoldja a valós élethelyzetekben. Az alapelv az, hogy van egy bizonyos számsorozat vagy dátum és idő értékek, amelyek között tiszteletben kell tartani meghatározott időközönként, de néhány elem hiányzik. rések keresése megoldás magában találni az elemeket, amelyek hiányoznak a sorrendben, és a keresési tartomány - a megállapítás szomszédos tartományok meglévő értékeket. Annak igazolására, a technika a kutatási hiányosságokat és szalagok azt használja A táblázatban megnevezett T1 számszerű sorrendben az oszlopon col1 egy térköz egyenlő eggyel, és a T2 asztal egy sorozata dátum és idő a módszer a col1 oszlopon időközökkel egy nap. Itt a kód teremtés T1 és T2, és a töltés őket vizsgálati adatok:

Mint korábban említettük, a feladat megtalálni rések megfigyelésünk szerint tartományok hiányzó értékek a sorozatban. A mi vizsgálati adatok T1 kívánt eredményt a számszerű sorrendben a következő:

T-SQL, hiányosságok és tartományok

De a kívánt eredmény sorozatát címkék dátumok és időpontok T2:

T-SQL, hiányosságok és tartományok

A probléma megtalálásának tartományok mány magában foglalja a meglévő értékeket. Íme a várt eredményeket a számszerű sorrendben:

T-SQL, hiányosságok és tartományok

És itt van a kívánt eredmény idősorrendjében dátumok:

T-SQL, hiányosságok és tartományok

Az egyik leghatékonyabb megoldás tartománykeresést probléma használatával jár rangsor. Használt DENSE_RANK funkció segítségével létrehozhat egy sorozata egész számok a rendelési által col1 és számított a különbség col1 és „sűrű minőségű» (drnk), valami ilyesmit;

T-SQL, hiányosságok és tartományok

Megjegyezzük, hogy a tartomány a különbség ugyanaz, és ez egyedülálló az egyes sávokban. Ez azért van, mert col1 és drnk növekedés egy intervallum. Az átmenet a következő col1 tartomány növekszik több mint egy intervallum, egy drnk mindig növekszik egy intervallum. Ezért a különbség az egymást követő intervallum nagyobb, mint az előző. Tekintettel arra, hogy ez a különbség ugyanaz, és egyedülálló minden egyes tartományban, akkor tudja használni, mint a csoport azonosítót. Annak érdekében, hogy egyetlen csoport sorok szerint ezt a különbséget, és visszatér a maximális és minimális értékét col1 az egyes csoportokban:

A terv ennek a megoldásnak az alábbiakban mutatjuk be:

A terv nagyon hatékony, mert a számítása az index felhasznált sűrű rang rendelés alapján col1.

Kapcsolódó cikkek