SQL egyszerűsített: Moduláris és érthető lekérdezések készítése CTE-kkel – KDnuggets

SQL egyszerűsített: Moduláris és érthető lekérdezések készítése CTE-kkel – KDnuggets

Forrás csomópont: 3084928

SQL egyszerűsített: Moduláris és érthető lekérdezések készítése CTE-kkel
A kép szerzője 
 

Az adatok világában az SQL még mindig az adatbázisokkal való interakció lingua franca. 

Még ma is az egyik leggyakrabban használt nyelv az adatok kezelésére, és továbbra is kötelezőnek számít minden jó adatszakértő számára. 

Azonban bárki, aki már dolgozott összetett SQL-lekérdezésekkel, tudja, hogy ezek gyorsan nehézkes vadállatokká válhatnak – nehezen olvasható, karbantartható vagy újrafelhasználható. 

Ezért ma már nem elég ismerni az SQL-t, ügyesnek kell lennünk a lekérdezések elkészítésében. És ez valójában egyfajta művészet. 

Itt lépnek életbe a Common Table Expressions (CTE-k), amelyek a lekérdezésírás művészetét strukturáltabb és megközelíthetőbb mesterséggé alakítják.

Tehát fedezzük fel együtt, hogyan kódolhatunk olvasható és újrafelhasználható lekérdezéseket.

Ha kíváncsi, mi az a CTE, akkor a megfelelő cikkben jár. 

A Common Table Expression (CTE) egy ideiglenes eredményhalmaz, amely egyetlen SQL utasítás végrehajtási hatókörén belül van meghatározva. 

 

Ezek olyan időbeli táblák, amelyekre egyetlen lekérdezésben sokszor lehet hivatkozni, és jellemzően összetett csatlakozások és részlekérdezések egyszerűsítésére szolgálnak, azzal a végső céllal, hogy javítsák az SQL-kód olvashatóságát és rendszerezését.

Így ezek hatékony eszközök az összetett lekérdezések egyszerűbb részekre bontására.

Ezért érdemes megfontolni a CTE-k használatát:

  • A modularitás: Az összetett logikát olvasható darabokra bonthatja.
  • Olvashatóság: Ez megkönnyíti az SQL-lekérdezések folyamatának megértését.
  • Újrahasználhatóság: A CTE-kre egyetlen lekérdezésben többször is hivatkozhatunk, elkerülve az ismétlést.

A varázslat a WITH záradékkal kezdődik, amely megelőzi a fő lekérdezést, és különböző temporális táblákat (CTE) határoz meg álnevekkel.

Ezért mindig a „WITH” paranccsal kell kezdenünk a lekérdezést, hogy elkezdhessük saját CTE-k meghatározását. A CTE-k használatával bármilyen összetett SQL lekérdezést feloszthatunk: 

– Kis időbeli táblák, amelyek a kapcsolódó változókat számítják ki. 

– Egy zárótábla, amely csak azokat a változókat veszi fel, amelyeket kimenetként szeretnénk.

És pontosan ezt a MODULÁRIS megközelítést szeretnénk bármilyen kódban!

 

SQL egyszerűsített: Moduláris és érthető lekérdezések készítése CTE-kkel
A kép szerzője
 

Tehát a CTE-k használata a lekérdezésekben lehetővé teszi számunkra, hogy:

– Végezzen el EGYSZER egy temporális táblát, és hivatkozzon rá TÖBBszor.

– Az olvashatóság javítása és az összetett logika egyszerűsítése.

– A kód újrafelhasználhatóságának és a moduláris felépítésnek az előmozdítása.

Ennek jobb megértése érdekében vegyünk egy gyakorlati példát az Airbnb barcelonai listáiról. 

Képzelje el, hogy szeretnénk elemezni a listák teljesítményét városrészenként, és összehasonlítani azt a város általános teljesítményével. Össze kell gyűjtenie a környékekkel, az egyes apartmanokkal, a házigazdákkal és az árakkal kapcsolatos információkat.

Ennek példázására használjuk a InsideAirbnb Barcelona táblázata, amely így néz ki: 

 

SQL egyszerűsített: Moduláris és érthető lekérdezések készítése CTE-kkel
 

Egy naiv megközelítés oda vezethet, hogy beágyazott segédlekérdezéseket hoz létre, amelyek gyorsan karbantartási rémálommá válnak, mint például a következő:

A szerző kódja

Ehelyett CTE-ket használhatunk arra, hogy lekérdezésünket logikai részekre bontsuk, amelyek mindegyike meghatározza a puzzle egy-egy darabját.

  • Környéki adatok: Hozzon létre egy CTE-t az adatok körzetenkénti összegzéséhez.
  • Az apartman és a szállásadó információ: Határozza meg a CTE-ket az apartmanokkal és a házigazdákkal kapcsolatos részletekért.
  • Városszintű mutatók: Egy másik CTE városi szintű statisztikák gyűjtésére összehasonlítás céljából.
  • Végső összeszerelés: Kombinálja a CTE-ket egy végső SELECT utasításban az adatok összefüggő megjelenítéséhez.

 

SQL egyszerűsített: Moduláris és érthető lekérdezések készítése CTE-kkel
A kép szerzője
 

És végül a következő kérdéshez jutnánk:

A szerző kódja

A CTE-k használatával a potenciálisan szörnyű egyetlen lekérdezést adatmodulok szervezett halmazává alakítjuk. Ez a moduláris megközelítés az SQL-kódot intuitívabbá és a változásokhoz alkalmazkodóbbá teszi. 

Ha új követelmények merülnek fel, a teljes lekérdezés átdolgozása nélkül módosíthatja vagy hozzáadhatja a CTE-ket.

Miután létrehozta a CTE-ket, újra felhasználhatja őket összehasonlító elemzések elvégzésére. Például, ha össze szeretné hasonlítani a környék adatait a város egészére kiterjedő mérőszámokkal, hivatkozhat a CTE-kre a JOIN műveletek sorozatában. 

Ezzel nem csak időt takarít meg, hanem a kód hatékonyságát is megőrzi, mivel nem kell kétszer megismételnie ugyanazt a lekérdezést!

A CTE-k annak az elvnek a bizonyítékai, hogy egy kis struktúra sokat segít a programozásban. A CTE-k elfogadásával világosabb, karbantarthatóbb és újrafelhasználható SQL-lekérdezéseket írhat. 

Leegyszerűsíti a lekérdezésfejlesztési folyamatot, és megkönnyíti az összetett adatlekérési logika kommunikálását másokkal.

Ne feledje, hogy amikor legközelebb egy több csatlakozásból álló, beágyazott segédlekérdezés-szörny írásába kezd, fontolja meg annak lebontását CTE-kkel. 

Jövőbeli énje – és bárki más, aki esetleg elolvassa a kódját – hálás lesz neked.
 
 

Josep Ferrer elemző mérnök Barcelonából. Fizikai mérnöki diplomát szerzett, jelenleg az emberi mobilitásra vonatkozó adattudományi területen dolgozik. Ő egy részmunkaidős tartalomkészítő, aki az adattudományra és a technológiára összpontosít. Felveheti vele a kapcsolatot LinkedIn, Twitter or közepes.

Időbélyeg:

Még több KDnuggets