SQL simplificat: crearea de interogări modulare și ușor de înțeles cu CTE-uri - KDnuggets

SQL simplificat: crearea de interogări modulare și ușor de înțeles cu CTE-uri – KDnuggets

Nodul sursă: 3084928

SQL simplificat: crearea de interogări modulare și ușor de înțeles cu CTE-uri
Imagine de autor 
 

În lumea datelor, SQL rămâne limba franca pentru interacțiunea cu bazele de date. 

Și astăzi este unul dintre cele mai utilizate limbi pentru tratarea datelor și este încă considerat un must-have pentru orice profesionist bun de date. 

Cu toate acestea, oricine a lucrat cu interogări SQL complexe știe că se pot transforma rapid în animale grele - greu de citit, întreținut sau reutilizat. 

Acesta este motivul pentru care astăzi nu este suficient să cunoaștem SQL, trebuie să fim buni la elaborarea interogărilor. Și acesta este de fapt un tip de artă. 

Aici intră în joc expresiile comune de tabel (CTE), transformând arta scrierii interogărilor într-un mod mai structurat și mai accesibil.

Deci, haideți să descoperim împreună cum să codificăm interogări care pot fi citite și reutilizabile.

Dacă vă întrebați ce este un CTE, sunteți în articolul potrivit. 

O expresie de tabel comună (CTE) este un set de rezultate temporar care este definit în domeniul de execuție al unei singure instrucțiuni SQL. 

 

Sunt tabele temporale care pot fi referite de mai multe ori într-o singură interogare și, de obicei, sunt utilizate pentru a simplifica îmbinări și subinterogări complexe, cu scopul final de a crește lizibilitatea și organizarea codului SQL.

Prin urmare, sunt instrumente puternice pentru descompunerea interogărilor complexe în părți mai simple.

Iată de ce ar trebui să luați în considerare utilizarea CTE-urilor:

  • modularitate: Puteți descompune logica complexă în bucăți care pot fi citite.
  • lizibilitate: Facilitează înțelegerea fluxului de interogări SQL.
  • Reutilizabilitate: CTE-urile pot fi referite de mai multe ori într-o singură interogare, evitând repetarea.

Magia începe cu clauza WITH, care precede interogarea principală și definește diferite tabele temporale (CTE) cu aliasuri.

Prin urmare, trebuie să începem întotdeauna interogarea cu comanda „CU” pentru a începe să definim propriile CTE. Folosind CTE, putem împărți orice interogare SQL complexă în: 

– Tabele temporale mici care calculează variabilele aferente. 

– Un tabel final care ia doar acele variabile pe care le dorim ca rezultat.

Și tocmai aceasta este abordarea MODULARĂ pe care o dorim în orice cod!

 

SQL simplificat: crearea de interogări modulare și ușor de înțeles cu CTE-uri
Imagine de autor
 

Prin urmare, utilizarea CTE-urilor în interogările noastre ne permite să:

– Executați un tabel temporal O dată și faceți referire la acesta de MULTE ori.

– Îmbunătățiți lizibilitatea și simplificați logica complexă.

– Promovați reutilizarea codului și designul modular.

Pentru a înțelege mai bine acest lucru, putem lua un exemplu practic de listări Airbnb din Barcelona. 

Imaginați-vă că vrem să analizăm performanța înregistrărilor în funcție de cartier și să o comparăm cu performanța generală a orașului. Ar trebui să strângeți informații despre cartiere, apartamente individuale, gazde și prețuri.

Pentru a exemplifica acest lucru, vom folosi În interiorul Airbnb tabelul Barcelonei, care arată astfel: 

 

SQL simplificat: crearea de interogări modulare și ușor de înțeles cu CTE-uri
 

O abordare naivă vă poate conduce să creați subinterogări imbricate care devin rapid un coșmar de întreținere, cum urmează:

Cod de autor

În schimb, putem folosi CTE-urile pentru a ne compartimenta interogarea în secțiuni logice - fiecare definind o piesă a puzzle-ului.

  • Date de vecinătate: Creați un CTE pentru a rezuma datele în funcție de cartier.
  • Informații despre apartament și gazdă: Definiți CTE-uri pentru detalii despre apartamente și gazde.
  • Valori la nivel de oraș: Un alt CTE pentru a aduna statistici la nivel de oraș pentru comparație.
  • Asamblarea finala: Combinați CTE-urile într-o declarație finală SELECT pentru a prezenta datele în mod coeziv.

 

SQL simplificat: crearea de interogări modulare și ușor de înțeles cu CTE-uri
Imagine de autor
 

Și vom ajunge cu următoarea interogare:

Cod de autor

Folosind CTE, transformăm o singură interogare potențial monstruoasă într-un set organizat de module de date. Această abordare modulară face codul SQL mai intuitiv și mai adaptabil la schimbări. 

Dacă apar cerințe noi, puteți ajusta sau adăuga CTE-uri fără a revizui întreaga interogare.

După ce v-ați stabilit CTE-urile, le puteți reutiliza pentru a efectua analize comparative. De exemplu, dacă doriți să comparați datele de cartier cu valorile la nivel de oraș, puteți face referire la CTE-urile dvs. într-o serie de operațiuni JOIN. 

Acest lucru nu numai că economisește timp, dar vă menține și codul eficient, deoarece nu va trebui să repetați aceeași interogare de două ori!

CTE-urile sunt o dovadă a principiului că o mică structură merge mult în programare. Prin adoptarea CTE-urilor, puteți scrie interogări SQL mai clare, mai ușor de întreținut și mai reutilizabile. 

Ea eficientizează procesul de dezvoltare a interogărilor și facilitează comunicarea logicii complexe de recuperare a datelor altora.

Amintiți-vă, data viitoare când vă aflați pe cale să începeți să scrieți un monstru subinterogare cu mai multe alăturari, imbricat, luați în considerare defalcarea acestuia cu CTE-uri. 

Eul tău viitor – și oricine altcineva care ar putea citi codul tău – îți va mulțumi.
 
 

Josep Ferrer este inginer analitic din Barcelona. A absolvit inginerie fizică și lucrează în prezent în domeniul Data Science aplicat mobilității umane. El este un creator de conținut part-time axat pe știința și tehnologia datelor. Îl poți contacta pe LinkedIn, Twitter or Mediu.

Timestamp-ul:

Mai mult de la KDnuggets