SQL Data Analysis for Business Insights

OVERVIEW

DatabaseにあるさまざまなtableからJOINステートメントを使って1つのTableを作成するプロジェクト課題に取り組みました。(全8問)English below Japanese.

YEAR 2024 - 2024

1問目は、staffテーブルにあるfirst, last nameをリストにいれ、所有住所(street, district, country含む)をaddressテーブルからリスト化する課題。

・staffテーブルとaddressテーブルを関係づけるため、LEFT JOINステートメントを使い、二つに共有しているstaff_idを関係づけました。

・address_idもaddressテーブルとstoreテーブルで共有しているため、関係づけました。

・同様に、city_idもaddressテーブルとcityテーブルから関係づけ、country_idもcityテーブルとcountryテーブルから関係づけ、以下のリストを完成させました。

2問目は、store_id, inventory_id, filmの名前, rating, rental rate, replacement costを含む在庫商品をリスト化する課題。

・inventoryテーブルには、store_id, inventory_idはあるものの、それ以外の指定されているものは、filmテーブルに入っているため、LEFT JOINステートメントを使い二つのテーブルを関係づけ、リストを完成させました。

3問目は、4問目で抽出したリストを簡潔化する課題。それぞれのお店に特定のratingに対する在庫がどれくらいあるかリスト化しました。

・それぞれのお店、特定のratingという指定があるため、store_id, ratingをリストにいれ、在庫がどれくらいあるか確認するためにCOUNTステートメントを使いました。

・inventoryテーブルにstore_id, inventory_idがあるが、ratingはfilmテーブルにあるため、LEFT JOINステートメントで二つのテーブルに共通しているfilm_idを使い、二つを関係づけました。

・store_idとratingに対して、という課題のため、GROUP BYステートメントを使いグループ化しました。

4問目は、特定のカテゴリーの映画の人気が下がった際に、どれくらい影響があるのかを分析する課題。(映画の数、平均replacement cost、replacement costの合計)

COUNTステートメントを使い、映画の数を算出しました。

AVGステートメントを使い、replacecment costの平均を算出しました。

SUMステートメントを使い、replacement costの合計を算出しました。

・film_idをinventoryテーブルとfilmテーブルで共有しているため、LEFT JOINステートメントで関係づけました。

・同様に、film_categoryテーブルとfilmテーブルでfilm_idを共有しているため、LEFT JOINステートメントで関係づけました。

・さらに、category_idをfilm_categoryテーブルとcategoryテーブルで有しているため、LEFT JOINステートメントで関係づけました。

・store_idとcategory.nameに対する映画の数、平均replacement cost、replacement costの合計を表示したいため、GROUP BYステートメントを使用しました。

5問目は、カスタマーがどのような人物なのか分析する課題。カスタマーの名前、どの店舗を利用しているか、active状況、カスタマーのstreet, city, countryを含む住所のリスト化

・customerテーブルから、first, last nameを抽出し、どの店舗を利用しているか特定するため、store_idをリストに追加し、activeを状況を追加。customerテーブルには住所全体は、記載されていないため、記載されている住所をそれぞれのテーブルから抽出しました。

・複数のテーブルを関係づける必要があったため、以下のリストを描き、まとめ、それぞれにLEFT JOINステートメントを使い、関係づけました。

6問目は、カスタマーがどれくらい支払いをしているかにより優先するべきカスタマーを分析する課題。カスタマーの名前、今までのレンタル回数、支払い合計、レンタル回数を高い順にリスト化しました。

・customerテーブルから、first, last nameを抽出し、レンタル回数をCOUNTステートメントで抽出し、支払い合計をSUMステートメントで抽出しました。

・customer_idをcustomerテーブルとrentalテーブルで共有しているため、LEFT JOINステートメント関係づけました。

・同様にrental_idをrentalテーブルとpaymentテーブルで共有しているため、LEFT JOINステートメント関係づけました。以下に思考回路を描いたものを参照ください。

GROUP BYステートメントを使い、カスタマーに対するレンタル回数と支払い合計に作成しました。

・また、レンタル回数合計の高い順にリスト化する指定があるため、ORDER BYステートメントを使用し、降順に並べ替えました。


7問目は、アドバイザーと投資者のテーブルを一つにリスト化する課題。それぞれの名前、投資者の企業名をリスト化しました。

UNIONステートメントを使い、advisorテーブルとinvestorテーブルを一つにリスト化しました。

・それぞれのtypeが表示されるように、tyoe欄を "  " AS typeを使い指定しました。

8問目は、受賞歴のある俳優を含む映画が何%あるか分析する課題。(2つのawardを受賞した俳優の場合と1つの受賞歴の場合も算出)

・3つの場合をカテゴライズするためにCASEステートメントを使い、3つ受賞した場合、2つ受賞した場合、ELSEステートメントを使い、1つの場合と分けました。

・END ASで表示されるコラムの名前をnumber_of_awardsに指定しました。

・AVGでパーセンテージを算出し、GROUP BYでそれぞれのケースに対するパーセンテージと指定しました。

Description in English

- Conducted comprehensive data analysis using SQL to provide actionable insights for business decision-making
- Extracted and analyzed data from multiple tables to answer specific business questions for underwriters

  • Key Achievements:
    - Retrieved and compiled manager and store information to facilitate in-person visits
    - Generated detailed inventory reports, summarizing inventory levels and financial metrics by store and film category
    - Analyzed customer demographics, spending habits, and identified top customers based on lifetime value
    - Created combined lists of advisors and investors, differentiating roles and affiliations
    - Assessed film coverage for award-winning actors to evaluate the breadth of available inventory

    Technical Skills:
  • Utilized SQL commands including SELECT, AS, FROM, LEFT JOIN, COUNT, DISTINCT, GROUP BY, AVG, SUM, ORDER BY, DESC, UNION, CASE, WHEN, and ELSE.


WEBSITE