SQL の簡略化: CTE を使用したモジュール式でわかりやすいクエリの作成 - KDnuggets

SQL の簡略化: CTE を使用したモジュール式でわかりやすいクエリの作成 – KDnuggets

ソースノード: 3084928

SQL の簡素化: CTE を使用したモジュール式でわかりやすいクエリの作成
著者による画像 
 

データの世界では、SQL は依然としてデータベースと対話するための共通語として機能しています。 

現在でも、データを処理するために最も使用されている言語の 1 つであり、優れたデータ専門家にとって必須の言語であると考えられています。 

ただし、複雑な SQL クエリを扱ったことがある人なら誰でも、クエリがすぐに読み取り、保守、再利用が困難な扱いにくい獣に変わる可能性があることを知っています。 

このため、今日では SQL を理解するだけでは十分ではなく、クエリを作成することに熟達する必要があります。そして、これは実際には一種の芸術です。 

ここで Common Table Expressions (CTE) が登場し、クエリ記述技術をより構造化された親しみやすい技術に変換します。

それでは、読み取り可能で再利用可能なクエリをコード化する方法を一緒に発見しましょう。

CTE とは何なのか疑問に思っている場合は、適切な記事を参照してください。 

共通テーブル式 (CTE) は、単一の SQL ステートメントの実行スコープ内で定義される一時的な結果セットです。 

 

これらは 1 つのクエリ内で何度も参照できるテンポラル テーブルであり、SQL コードの可読性と構成を向上させるという最終的な目標を持って、通常は複雑な結合やサブクエリを簡素化するために使用されます。

したがって、これらは、複雑なクエリをより単純な部分に分割するための強力なツールです。

CTE の使用を検討する必要がある理由は次のとおりです。

  • モジュール性: 複雑なロジックを読みやすいチャンクに分割できます。
  • 可読性: SQL クエリの流れを理解しやすくなります。
  • 再利用性: CTE は 1 つのクエリで複数回参照できるため、繰り返しを避けることができます。

魔法は WITH 句から始まります。WITH 句はメイン クエリの前にあり、別名を使用してさまざまなテンポラル テーブル (CTE) を定義します。

したがって、独自の CTE の定義を開始するには、常に「WITH」コマンドでクエリを開始する必要があります。 CTE を使用すると、複雑な SQL クエリを次のように分割できます。 

– 関連する変数を計算する小さな一時テーブル。 

– 出力として必要な変数のみを取得する最終テーブル。

そしてこれはまさに、あらゆるコードに必要な MODULAR アプローチです。

 

SQL の簡素化: CTE を使用したモジュール式でわかりやすいクエリの作成
著者による画像
 

したがって、クエリで CTE を使用すると、次のことが可能になります。

– テンポラル テーブルを 1 回実行し、それを複数回参照します。

– 可読性を向上させ、複雑なロジックを簡素化します。

– コードの再利用性とモジュール設計を促進します。

これをよりよく理解するために、バルセロナでの Airbnb のリスティングの実例を見て​​みましょう。 

地区ごとのリスティングのパフォーマンスを分析し、それを都市全体のパフォーマンスと比較したいと想像してください。近隣地域、個々のアパート、ホスト、料金などの情報をまとめる必要があります。

これを例証するために、 インサイドAirbnb バルセロナのテーブルは次のようになります。 

 

SQL の簡素化: CTE を使用したモジュール式でわかりやすいクエリの作成
 

単純なアプローチでは、次のようなネストされたサブクエリを作成することになり、すぐにメンテナンスの悪夢になってしまう可能性があります。

著者によるコード

代わりに、CTE を利用してクエリを論理セクションに分割し、それぞれがパズルのピースを定義できます。

  • 近隣データ: CTE を作成して、近隣ごとにデータを要約します。
  • アパートとホストの情報: アパートメントとホストの詳細については CTE を定義します。
  • 都市全体の指標: 比較のために都市レベルの統計を収集する別の CTE。
  • 最終組み立て: 最後の SELECT ステートメントで CTE を結合して、データを一貫して表示します。

 

SQL の簡素化: CTE を使用したモジュール式でわかりやすいクエリの作成
著者による画像
 

そして、最終的には次のようなクエリになります。

著者によるコード

CTE を使用することで、巨大になる可能性がある単一のクエリを、組織化されたデータ モジュールのセットに変換します。このモジュール式のアプローチにより、SQL コードがより直観的になり、変更に適応できるようになります。 

新しい要件が発生した場合は、クエリ全体を徹底的に見直すことなく、CTE を調整または追加できます。

CTE を確立したら、それらを再利用して比較分析を実行できます。たとえば、近隣データを市全体の指標と比較する場合は、一連の JOIN 操作で CTE を参照できます。 

これにより、時間が節約されるだけでなく、同じクエリを 2 回繰り返す必要がなくなるため、コードの効率も維持されます。

CTE は、プログラミングでは小さな構造が大きな効果を発揮するという原則の証拠です。 CTE を採用すると、より明確で保守性が高く、再利用可能な SQL クエリを作成できます。 

これにより、クエリ開発プロセスが合理化され、複雑なデータ取得ロジックを他のユーザーに伝達することが容易になります。

次回、多重結合のネストされたサブクエリ モンスターの作成に着手するときは、CTE を使用して分割することを検討してください。 

将来のあなた自身、そしてあなたのコードを読むかもしれない他の人はあなたに感謝するでしょう。
 
 

ジョセップ・フェレール バルセロナ出身の分析エンジニアです。 彼は物理工学を卒業し、現在は人間の移動に適用されるデータ サイエンス分野で働いています。 彼は、データ サイエンスとテクノロジーに焦点を当てた非常勤のコンテンツ クリエイターです。 あなたは彼に連絡することができます LinkedIn, Twitter or M.

タイムスタンプ:

より多くの KDナゲット