著者による画像
データの世界では、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 アプローチです。
著者による画像
したがって、クエリで CTE を使用すると、次のことが可能になります。
– テンポラル テーブルを 1 回実行し、それを複数回参照します。
– 可読性を向上させ、複雑なロジックを簡素化します。
– コードの再利用性とモジュール設計を促進します。
これをよりよく理解するために、バルセロナでの Airbnb のリスティングの実例を見てみましょう。
地区ごとのリスティングのパフォーマンスを分析し、それを都市全体のパフォーマンスと比較したいと想像してください。近隣地域、個々のアパート、ホスト、料金などの情報をまとめる必要があります。
これを例証するために、 インサイドAirbnb バルセロナのテーブルは次のようになります。
単純なアプローチでは、次のようなネストされたサブクエリを作成することになり、すぐにメンテナンスの悪夢になってしまう可能性があります。
著者によるコード
代わりに、CTE を利用してクエリを論理セクションに分割し、それぞれがパズルのピースを定義できます。
- 近隣データ: CTE を作成して、近隣ごとにデータを要約します。
- アパートとホストの情報: アパートメントとホストの詳細については CTE を定義します。
- 都市全体の指標: 比較のために都市レベルの統計を収集する別の CTE。
- 最終組み立て: 最後の SELECT ステートメントで CTE を結合して、データを一貫して表示します。
著者による画像
そして、最終的には次のようなクエリになります。
著者によるコード
CTE を使用することで、巨大になる可能性がある単一のクエリを、組織化されたデータ モジュールのセットに変換します。このモジュール式のアプローチにより、SQL コードがより直観的になり、変更に適応できるようになります。
新しい要件が発生した場合は、クエリ全体を徹底的に見直すことなく、CTE を調整または追加できます。
CTE を確立したら、それらを再利用して比較分析を実行できます。たとえば、近隣データを市全体の指標と比較する場合は、一連の JOIN 操作で CTE を参照できます。
これにより、時間が節約されるだけでなく、同じクエリを 2 回繰り返す必要がなくなるため、コードの効率も維持されます。
CTE は、プログラミングでは小さな構造が大きな効果を発揮するという原則の証拠です。 CTE を採用すると、より明確で保守性が高く、再利用可能な SQL クエリを作成できます。
これにより、クエリ開発プロセスが合理化され、複雑なデータ取得ロジックを他のユーザーに伝達することが容易になります。
次回、多重結合のネストされたサブクエリ モンスターの作成に着手するときは、CTE を使用して分割することを検討してください。
将来のあなた自身、そしてあなたのコードを読むかもしれない他の人はあなたに感謝するでしょう。
ジョセップ・フェレール バルセロナ出身の分析エンジニアです。 彼は物理工学を卒業し、現在は人間の移動に適用されるデータ サイエンス分野で働いています。 彼は、データ サイエンスとテクノロジーに焦点を当てた非常勤のコンテンツ クリエイターです。 あなたは彼に連絡することができます LinkedIn, Twitter or M.
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- PlatoData.Network 垂直生成 Ai。 自分自身に力を与えましょう。 こちらからアクセスしてください。
- プラトアイストリーム。 Web3 インテリジェンス。 知識増幅。 こちらからアクセスしてください。
- プラトンESG。 カーボン、 クリーンテック、 エネルギー、 環境、 太陽、 廃棄物管理。 こちらからアクセスしてください。
- プラトンヘルス。 バイオテクノロジーと臨床試験のインテリジェンス。 こちらからアクセスしてください。
- 情報源: https://www.kdnuggets.com/sql-simplified-crafting-modular-and-understandable-queries-with-ctes?utm_source=rss&utm_medium=rss&utm_campaign=sql-simplified-crafting-modular-and-understandable-queries-with-ctes
- :持っている
- :は
- :not
- :どこ
- $UP
- a
- 私たちについて
- 実際に
- 加えます
- 調整します
- 採用
- に対して
- のAirbnb
- ことができます
- また
- 常に
- an
- 分析
- 分析論
- 分析します
- および
- 別の
- どれか
- 誰も
- マンション
- 適用された
- アプローチ
- 親しみやすい
- です
- 宝品
- 記事
- AS
- アセンブリ
- At
- 回避
- バルセロナ
- BE
- になる
- より良いです
- ブレーク
- 破壊
- 焙煎が極度に未発達や過発達のコーヒーにて、クロロゲン酸の味わいへの影響は強くなり、金属を思わせる味わいと乾いたマウスフィールを感じさせます。
- by
- 缶
- 変更
- より明確に
- コード
- 組み合わせる
- 来ます
- コマンドと
- 伝える
- 比較します
- 比較
- 複雑な
- 計算
- 検討
- 見なさ
- 接触
- コンテンツ
- クラフト
- 作ります
- クリエイター
- 現在
- データ
- データサイエンス
- データベースを追加しました
- 取引
- 定義済みの
- 定義する
- 定義
- 設計
- 細部
- 開発
- 異なります
- 発見する
- ダウン
- 容易
- 効率的な
- ほかに
- 乗り出す
- 出てくる
- end
- エンジニア
- エンジニアリング
- 十分な
- 全体
- 設立
- 例
- 実行します
- 実行
- 表現
- 表現
- フィールド
- ファイナル
- もう完成させ、ワークスペースに掲示しましたか?
- フロー
- 焦点を当て
- フォロー中
- 次
- から
- 未来
- 集める
- 目標
- ゴエス
- 良い
- 持ってる
- he
- 彼に
- host
- ホスト
- 認定条件
- How To
- HTTP
- HTTPS
- 人間
- if
- 改善します
- in
- の増加
- 個人
- 情報
- 相互作用
- に
- 直観的な
- IT
- join
- ジョイン
- JPG
- KDナゲット
- 知っている
- 知っている
- ESL, ビジネスESL <br> 中国語/フランス語、その他
- つながる
- ような
- <font style="vertical-align: inherit;"><font style="vertical-align: inherit;">アップロード履歴
- 少し
- ロジック
- 論理的な
- 長い
- LOOKS
- マジック
- メイン
- 維持する
- メンテナンス可能
- メンテナンス
- 作る
- 多くの
- メトリック
- かもしれない
- モビリティ
- モジュラー
- モジュール
- 他には?
- 最も
- の試合に
- 持っている必要があります
- 必要
- 新作
- 次の
- of
- on
- かつて
- ONE
- の
- 業務執行統括
- or
- 注文
- 組織
- 整理
- その他
- 私たちの
- でる
- 出力
- 全体
- 自分の
- 部品
- 実行する
- パフォーマンス
- 物理学
- ピース
- プラトン
- プラトンデータインテリジェンス
- プラトデータ
- プレイ
- :
- 強力な
- 実用的
- 正確に
- 現在
- 価格設定
- 原則
- プロセス
- プロ
- プログラミング
- 推進する
- パズル
- クエリ
- すぐに
- 読む
- 参照
- 参照
- 関連する
- 繰り返す
- 要件
- 結果
- 検索
- 再利用可能な
- 再利用
- 右
- 同じ
- 科学
- 科学技術
- スコープ
- select
- シリーズ
- セッションに
- すべき
- 簡単な
- 簡略化されました
- 簡素化する
- 小さい
- SQL
- スタンド
- start
- ステートメント
- 統計
- まだ
- 流線
- 構造
- 構造化された
- まとめる
- テーブル
- 取る
- 取り
- テクノロジー
- 一時的
- 遺言
- 感謝
- それ
- 世界
- それら
- 彼ら
- この
- それらの
- 時間
- <font style="vertical-align: inherit;">回数</font>
- 〜へ
- 今日
- 一緒に
- ツール
- 変換
- 順番
- type
- 一般的に
- 究極の
- わかる
- 理解できる
- 理解する
- us
- つかいます
- 中古
- 活用する
- 欲しいです
- 仕方..
- we
- この試験は
- 何ですか
- which
- 誰
- なぜ
- 意志
- 以内
- 無し
- 不思議に思います
- 働いていました
- ワーキング
- 世界
- でしょう
- 書きます
- 書き込み
- 貴社
- あなたの
- あなた自身
- ゼファーネット