SQL クエリを読んで理解するためのステップバイステップ ガイド - KDnuggets

SQL クエリを読んで理解するためのステップバイステップ ガイド – KDnuggets

ソースノード: 3091384

SQL クエリを読んで理解するためのステップバイステップ ガイド
による画像 Freepik
 

SQL (Standard Query Language) は、リレーショナル データベース管理システム (RDBMS) 内でデータを管理および操作するためのプログラミング言語です。これは、企業がデータにスムーズにアクセスできるようにするために多くの企業で使用されている標準言語です。 SQL は広く使用されているため、雇用では通常、必要なスキルの 1 つとして SQL を挙げています。そのため、SQL について学ぶことが不可欠です。

SQL を学習するときによくある問題の 1 つは、主に他の人が作成したクエリを理解することです。私たちは企業内でチームとして働いており、多くの場合、SQL クエリを読んで理解する必要があります。したがって、SQL クエリを分解して理解する練習をする必要があります。

この記事では、SQL クエリを読んで理解するためのプロセスを段階的に説明します。どうやってそれを行うのでしょうか?それでは始めましょう。

SQL クエリに遭遇したときに最初に行う必要があるのは、SQL クエリの一般的な意図を理解することです。一般的な意図は、クエリの構造について完全に知っていることを意味するものではありません。それよりも全体的な流れが重要です。

一般的な SQL クエリを理解するには、標準 SQL クエリを理解する必要があります。ほとんどの SQL クエリは次で始まります。 SELECT 句の後に続けて FROM 句。そこから続けて、ほとんどの場合、クエリの後に次のものが続きます。 登録, WHERE, グループ化, ご注文は、 および HAVING 条項。

上記の句は、理解する必要がある SQL クエリの標準的なものです。各句の機能は次のとおりです。

  1. SELECT: テーブルからどの列を取得するか
  2. FROM: データがどのテーブルから取得されたのか
  3. 登録: 指定された識別子を持つテーブルを結合します
  4. WHERE:条件によるデータフィルタリング
  5. グループ化: 列の値に基づいてデータを整理し、集計機能を実行できるようにします。
  6. ORDER BY: 特定の列に基づいてデータ結果の順序を並べ替えます
  7. HAVING: で指定できない集計関数のフィルタ条件 WHERE

これらは標準的な句であり、一般的な SQL クエリ構造を理解する際に最初に理解する必要があるものです。サンプルコードを使用してさらに学習してみましょう。

SELECT 
  customers.name, 
  purchases.product, 
  SUM(price) as total_price 
FROM 
  purchases 
  JOIN customers ON purchases.cust_id = customers.id 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  customers.name, 
  purchases.product 
HAVING 
  total_price > 10000 
ORDER BY 
  total_price DESC;

 

上記のクエリを確認するときは、標準的な句を特定してください。この句により、どのデータが選択されているかがわかります (SELECT)、どこから来たのか(FROM および 登録)、および条件 (WHERE, グループ化, ORDER BY, HAVING). 

たとえば、上記のクエリを読むと、次のことが理解できます。

  1. 3 つの異なる種類のデータを取得しようとします。customers というテーブルからの Name、purchase というテーブルからの Product、およびテーブルの出所が特定されない別名 total_price を持つ価格列の集計です (句からの情報)。 SELECT). 
  1. 全体的なデータは、購入の cust_id 列と顧客のテーブルの id 列を使用して結合する購入テーブルと顧客テーブルから取得されます (句からの情報) から) および 登録). 
  1. 購入テーブルのカテゴリ列の値が「キッチン」であるデータのみを選択します (条項からの情報) WHERE), 
  1. それぞれのテーブルから取得した名前と製品列を含む集計関数のグループ (句からの情報) グループ化), 
  1. total_price が 10000 を超える集計関数の結果合計からもフィルタリングされます (句からの情報) HAVING)、及び 
  1. total_price (句からの情報) に従ってデータを降順に並べます。 ORDER BY).

これは、理解し、識別する必要がある一般的な SQL クエリ構造です。そこから、高度なクエリをさらに詳しく調べることができます。次のステップに進みましょう。

非常に多くのクエリが存在する複雑なクエリに遭遇することがあります。 SELECT 句が同じクエリ内に存在します。この場合、クエリの最終結果または最終 (最初の) 結果を理解する必要があります。 SELECT クエリでわかります。重要なのは、クエリ出力がどのようなものであるかを知ることです。

以下のようなより複雑なコードを使用してみましょう。

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
) 
SELECT 
  c.name, 
  pd.product, 
  pd.total_product_price, 
  cs.total_spending 
FROM 
  (
    SELECT 
      purchases.cust_id, 
      purchases.product, 
      SUM(purchases.price) as total_product_price 
    FROM 
      purchases 
    WHERE 
      purchases.category = 'kitchen' 
    GROUP BY 
      purchases.cust_id, 
      purchases.product 
    HAVING 
      SUM(purchases.price) > 10000
  ) AS pd 
  JOIN customers c ON pd.cust_id = c.id 
  JOIN customerspending cs ON c.id = cs.id 
ORDER BY 
  pd.total_product_price DESC;

 

クエリはさらに複雑で長くなったように見えますが、最初は最後のクエリに重点を置く必要があります。 選択する、 これは、顧客の合計支出と購入履歴を生成しようとしているようです。最終結果がどうなるかを評価し、そこから細分化してみてください。

クエリから結果が得られるはずであるという洞察が得られます。次の部分は、決勝戦の条件を確認することです。 SELECT は。条件節には以下が含まれます。 WHERE, グループ化, ORDER BY, HAVING 全体的なデータ結果を制御するものでした。 

クエリの条件を読んで理解しようとすると、クエリの最終結果をよりよく理解できるようになります。たとえば、前の SQL クエリでは、最終条件は ORDER BY。これは、最終結果が製品の合計価格の降順に並べられることを意味します。 

最終条件を知ることは、クエリの重要な部分と全体的なクエリの意図を理解するのに役立ちます。

最後に、データの出所を理解する必要があります。選択するデータとその取得条件がわかったら、ソースを理解する必要があります。最終 登録 句を使用すると、テーブルがどのように相互作用し、データ フローが行われるかを理解できるようになります。

たとえば、前の複雑なクエリは、結合を 2 回実行したことを示しています。これは、最終結果を得るために少なくとも 3 つのデータ ソースを使用したことを意味します。この情報は、特にデータ ソースがサブクエリから取得される場合、各データ ソースがどのように取得されるかをさらに理解するために、後の手順で必要になります。

最終結果がどうあるべきか、そしてそれがどこから来たのかを理解した後、詳細を詳しく見る必要があります。ここから、各サブクエリを遡って、サブクエリがそのように構造化されている理由を理解します。

ただし、私たちはそれらをトップダウン構造で見ようとはしません。代わりに、最終結果に近いサブクエリを調べて、最終結果から最も遠いサブクエリに移動する必要があります。上記のコード例から、まずこのコードを理解する必要があります。

SELECT 
  purchases.cust_id, 
  purchases.product, 
  SUM(purchases.price) as total_product_price 
FROM 
  purchases 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  purchases.cust_id, 
  purchases.product 
HAVING 
  SUM(purchases.price) > 10000

 

次に、次の最も遠いコードに移動します。

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
)

 

各サブクエリを結果に近いものから最も遠いものまで分解すると、作成者の思考プロセスを明確に追跡できます。 

各サブクエリを理解するのに助けが必要な場合は、上記のプロセスを繰り返してみてください。ある程度の練習を積めば、クエリを読んで理解することがより容易になるでしょう。

SQL クエリを読んで理解することは、どの企業でも SQL クエリを扱っているため、現代では誰もが身に付けておくべきスキルです。次のステップバイステップ ガイドを使用すると、複雑な SQL クエリをよりよく理解できるようになります。手順には次のものが含まれます。

  1. 一般的な SQL クエリ構造を理解する
  2. 最終選択を理解する
  3. 最終条件条項を理解する
  4. 最終結合を理解する
  5. 逆順の読み取りと繰り返し

 
 

コーネリアス・ユダ・ウィジャヤ は、データ サイエンス アシスタント マネージャー兼データ ライターです。 Allianz Indonesia でフルタイムで働いている間、彼はソーシャル メディアやライティング メディアを通じて Python とデータのヒントを共有するのが大好きです。

タイムスタンプ:

より多くの KDナゲット