SQL Data Analysis for Business Insights
DatabaseにあるさまざまなtableからJOINステートメントを使って1つのTableを作成するプロジェクト課題に取り組みました。(全8問)English below Japanese.
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.