Uproszczony SQL: tworzenie modułowych i zrozumiałych zapytań za pomocą CTE - KDnuggets

Uproszczony SQL: tworzenie modułowych i zrozumiałych zapytań za pomocą CTE – KDnuggets

Węzeł źródłowy: 3084928

Uproszczony SQL: tworzenie modułowych i zrozumiałych zapytań za pomocą CTE
Zdjęcie autora 
 

W świecie danych SQL nadal jest językiem używanym do interakcji z bazami danych. 

Do dziś jest to jeden z najczęściej używanych języków do obsługi danych i nadal uważany jest za niezbędny element każdego dobrego specjalisty ds. danych. 

Jednak każdy, kto pracował ze złożonymi zapytaniami SQL, wie, że mogą one szybko zamienić się w nieporęczne bestie – trudne do odczytania, utrzymania i ponownego użycia. 

Dlatego dzisiaj nie wystarczy znać SQL, trzeba umieć konstruować zapytania. I to właściwie jest rodzaj sztuki. 

W tym miejscu do gry wchodzą wyrażenia Common Table Expressions (CTE), przekształcające sztukę pisania zapytań w bardziej uporządkowane i przystępne rzemiosło.

Odkryjmy więc razem, jak kodować zapytania czytelne i nadające się do ponownego użycia.

Jeśli zastanawiasz się, czym jest CTE, jesteś we właściwym artykule. 

Wspólne wyrażenie tabelowe (CTE) to tymczasowy zestaw wyników zdefiniowany w zakresie wykonania pojedynczej instrukcji SQL. 

 

Są to tabele tymczasowe, do których można się wielokrotnie odwoływać w ramach jednego zapytania i zazwyczaj służą do uproszczenia złożonych złączeń i podzapytań, a ostatecznym celem jest zwiększenie czytelności i organizacji kodu SQL.

Są więc potężnym narzędziem do dzielenia złożonych zapytań na prostsze części.

Oto dlaczego warto rozważyć użycie CTE:

  • Modułowość: Możesz podzielić złożoną logikę na czytelne fragmenty.
  • Czytelność: Ułatwia to zrozumienie przepływu zapytań SQL.
  • Możliwość ponownego wykorzystania: Do CTE można odwoływać się wielokrotnie w jednym zapytaniu, co pozwala uniknąć powtórzeń.

Magia zaczyna się od klauzuli WITH, która poprzedza główne zapytanie i definiuje różne tabele tymczasowe (CTE) z aliasami.

Dlatego zawsze musimy rozpocząć nasze zapytanie od polecenia „WITH”, aby rozpocząć definiowanie własnych CTE. Używając CTE, możemy podzielić złożone zapytanie SQL na: 

– Małe tabele czasowe, które obliczają powiązane zmienne. 

– Tabela końcowa, która jako wynik przyjmuje tylko te zmienne, które chcemy.

I właśnie takiego MODUŁOWEGO podejścia chcemy w dowolnym kodzie!

 

Uproszczony SQL: tworzenie modułowych i zrozumiałych zapytań za pomocą CTE
Zdjęcie autora
 

Zatem użycie CTE w naszych zapytaniach pozwala nam:

– Wykonaj tabelę tymczasową RAZ i odwołuj się do niej WIELOkrotnie.

– Popraw czytelność i uprość złożoną logikę.

– Promuj możliwość ponownego użycia kodu i konstrukcję modułową.

Aby lepiej to zrozumieć, możemy posłużyć się praktycznym przykładem ofert Airbnb w Barcelonie. 

Wyobraź sobie, że chcemy przeanalizować skuteczność ofert według okolicy i porównać ją z ogólną wydajnością miasta. Musiałbyś zebrać informacje o dzielnicach, poszczególnych mieszkaniach, gospodarzach i cenach.

Aby to zilustrować, użyjemy WewnątrzAirbnb tabela Barcelony, która wygląda następująco: 

 

Uproszczony SQL: tworzenie modułowych i zrozumiałych zapytań za pomocą CTE
 

Naiwne podejście może prowadzić do utworzenia zagnieżdżonych podzapytań, które szybko staną się koszmarem konserwacyjnym, takim jak ten:

Kod autora

Zamiast tego możemy wykorzystać CTE do podzielenia naszego zapytania na logiczne sekcje, z których każda definiuje element układanki.

  • Dane sąsiedzkie: Utwórz CTE, aby podsumować dane według sąsiedztwa.
  • Informacje o apartamencie i gospodarzu: Zdefiniuj CTE, aby uzyskać szczegółowe informacje o apartamentach i gospodarzach.
  • Wskaźniki ogólnomiejskie: Kolejny CTE do gromadzenia statystyk na poziomie miasta dla porównania.
  • Montaż końcowy: Połącz współczynniki CTE w końcowej instrukcji SELECT, aby przedstawić dane w sposób spójny.

 

Uproszczony SQL: tworzenie modułowych i zrozumiałych zapytań za pomocą CTE
Zdjęcie autora
 

I skończylibyśmy z następującym zapytaniem:

Kod autora

Używając CTE, zamieniamy potencjalnie monstrualne pojedyncze zapytanie w zorganizowany zestaw modułów danych. To modułowe podejście sprawia, że ​​kod SQL jest bardziej intuicyjny i można go dostosować do zmian. 

Jeśli pojawią się nowe wymagania, możesz dostosować lub dodać CTE bez konieczności zmiany całego zapytania.

Po ustaleniu współczynników CTE można je ponownie wykorzystać do przeprowadzenia analizy porównawczej. Na przykład, jeśli chcesz porównać dane dotyczące okolicy ze wskaźnikami obejmującymi całe miasto, możesz odwołać się do swoich współczynników CTE w serii operacji JOIN. 

To nie tylko oszczędza czas, ale także zapewnia wydajność kodu, ponieważ nie będziesz musiał dwukrotnie powtarzać tego samego zapytania!

CTE są świadectwem zasady, że niewielka struktura ma duże znaczenie w programowaniu. Przyjmując CTE, możesz pisać jaśniejsze, łatwiejsze w utrzymaniu i nadające się do ponownego użycia zapytania SQL. 

Usprawnia proces tworzenia zapytań i ułatwia przekazywanie innym złożonej logiki wyszukiwania danych.

Pamiętaj, że następnym razem, gdy będziesz miał zamiar rozpocząć pisanie zagnieżdżonego potwora podzapytań z wieloma złączami, rozważ rozbicie go za pomocą współczynników CTE. 

Twoje przyszłe ja – i każdy, kto może przeczytać Twój kod – będzie Ci wdzięczny.
 
 

Józefa Ferrera jest inżynierem analitykiem z Barcelony. Ukończył inżynierię fizyki i obecnie pracuje w dziedzinie Data Science stosowanej do mobilności ludzi. Jest twórcą treści w niepełnym wymiarze godzin, koncentrującym się na analizie danych i technologii. Możesz skontaktować się z nim na LinkedIn, Twitter or Średni.

Znak czasu:

Więcej z Knuggety