Thực hành giải Case Study cùng SQL – Data Mart (Phần 2)

Sau khi đã hoàn thành bước làm sạch dữ liệu trong phần 1, chúng ta đã một bộ dữ liệu sạch sẵn sàng để phân tích. Trong phần 2 này, chúng ta sẽ tiến hành khám phá dữ liệu để hiểu hơn về các xu hướng mẫu hình trong dữ liệu. Bằng cách sử dụng các câu lệnh SQL, chúng ta sẽ trả lời các câu hỏi cụ thể liên quan đến dữ liệu, từ đó rút ra những kết luận quan trọng giá trị. Hãy cùng bắt đầu hành trình khám phá dữ liệu này với UniTrain nhé! 

1. Ngày trong tuần nào được sử dụng cho mỗi giá trị week_date?

SELECT DISTINCT(TO_CHAR(week_date, ‘day’)) AS week_day  

FROM clean_weekly_sales; 

1

Câu lệnh này chọn các giá trị duy nhất của week_date sau khi chuyển đổi chúng thành tên ngày trong tuần. Hàm TO_CHAR được sử dụng để chuyển đổi giá trị ngày thành chuỗi ký tự, và tham số ‘day’ chỉ định rằng chúng ta muốn lấy tên ngày trong tuần (ví dụ: Monday, Tuesday, v.v.). 

2. Có tổng cộng bao nhiêu giao dịch mỗi năm?

SELECT  

  calendar_year,  

  SUM(transactions) AS total_transactions 

FROM clean_weekly_sales 

GROUP BY calendar_year 

ORDER BY calendar_year; 

2

Giải thích:  

– SELECT calendar_year, SUM (transactions) AS total_transactions: Chọn cột calendar_year và tính tổng số giao dịch (transactions) cho mỗi năm, đặt tên kết quả là total_transactions. 

– GROUP BY calendar_year: Nhóm các bản ghi theo cột calendar_year để tính tổng số giao dịch cho mỗi năm. 

– ORDER BY calendar_year: Sắp xếp kết quả theo thứ tự năm (calendar_year). 

3. Tổng doanh số bán hàng của mỗi khu vực trong mỗi tháng là bao nhiêu?

SELECT  

  month_number,  

  region,  

  SUM(sales) AS total_sales 

FROM clean_weekly_sales 

GROUP BY month_number, region 

ORDER BY month_number, region; 

3

4. Tổng số lượng giao dịch trên mỗi nền tảng là bao nhiêu?

SELECT  

  platform,  

  SUM(transactions) AS total_transactions 

FROM clean_weekly_sales 

GROUP BY platform; 

4

5. Tỷ lệ phần trăm doanh số bán hàng của Retail so với Shopify cho mỗi tháng là bao nhiêu?

WITH monthly_transactions AS ( 

  SELECT  

    calendar_year,  

    month_number,  

    platform,  

    SUM(sales) AS monthly_sales 

  FROM clean_weekly_sales 

  GROUP BY calendar_year, month_number, platform 

SELECT  

  calendar_year,  

  month_number,  

  ROUND(100 * MAX  

    (CASE  

      WHEN platform = ‘Retail’ THEN monthly_sales ELSE NULL END)  

    / SUM(monthly_sales),2) AS retail_percentage, 

  ROUND(100 * MAX  

    (CASE  

      WHEN platform = ‘Shopify’ THEN monthly_sales ELSE NULL END) 

    / SUM(monthly_sales),2) AS shopify_percentage 

FROM monthly_transactions 

GROUP BY calendar_year, month_number 

ORDER BY calendar_year, month_number; 

5

Giải thích:  

– WITH monthly_transactions AS (…): Tạo một bảng tạm thời monthly_transactions chứa tổng doanh số bán hàng (monthly_sales) cho mỗi nền tảng (platform) trong mỗi tháng (month_number) và năm (calendar_year). 

– SELECT calendar_year, month_number, ROUND(100 * MAX (CASE WHEN platform = ‘Retail’ THEN monthly_sales ELSE NULL END) / SUM(monthly_sales),2) AS retail_percentage: Chọn năm (calendar_year), tháng (month_number), và tính tỷ lệ phần trăm doanh số bán hàng của nền tảng ‘Retail’ so với tổng doanh số bán hàng trong tháng đó. Kết quả được làm tròn đến 2 chữ số thập phân và đặt tên là retail_percentage. 

– ROUND(100 * MAX (CASE WHEN platform = ‘Shopify’ THEN monthly_sales ELSE NULL END) / SUM(monthly_sales),2) AS shopify_percentage: Tương tự, tính tỷ lệ phần trăm doanh số bán hàng của nền tảng ‘Shopify’ và đặt tên là shopify_percentage. 

6. Tỷ lệ phần trăm doanh số bán hàng theo nhân khẩu học cho từng năm trong tập dữ liệu là bao nhiêu?

WITH demographic_sales AS ( 

  SELECT  

    calendar_year,  

    demographic,  

    SUM(sales) AS yearly_sales 

  FROM clean_weekly_sales 

  GROUP BY calendar_year, demographic 

SELECT  

  calendar_year,  

  ROUND(100 * MAX  

    (CASE  

      WHEN demographic = ‘Couples’ THEN yearly_sales ELSE NULL END) 

    / SUM(yearly_sales),2) AS couples_percentage, 

  ROUND(100 * MAX  

    (CASE  

      WHEN demographic = ‘Families’ THEN yearly_sales ELSE NULL END) 

    / SUM(yearly_sales),2) AS families_percentage, 

  ROUND(100 * MAX  

    (CASE  

      WHEN demographic = ‘unknown’ THEN yearly_sales ELSE NULL END) 

    / SUM(yearly_sales),2) AS unknown_percentage 

FROM demographic_sales 

GROUP BY calendar_year; 

6

Xem thêm: 

Khóa học Ứng dụng SQL trong phân tích dữ liệu

Sử dụng Window Functions để phân tích dữ liệu trong SQL

Tăng hiệu suất tìm kiếm dữ liệu với hàm LIKE trong SQL

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

1 + 1 = ? (Nhập Haii để trả lời đúng)

Bài viết liên quan
Cách tạo Bookmarks trong Power BI

Trong quá trình làm việc với Power BI, đôi khi bạn muốn lưu lại một chế độ xem cụ thể của báo cáo để dễ dàng quay lại phân tích hoặc

Xem thêm
Cảm nhận học viên khóa Data Analysis for Business

“Khóa học đã giúp mình thay đổi cách nhìn về dữ liệu và mở ra nhiều cơ hội mới trong công việc.” Chị Phan Thị Mỹ Duyên – Công ty Davipharm

Xem thêm
[HOẠT ĐỘNG CỘNG ĐỒNG] Cuộc thi AI IN BUSINESS – SEASON 2 – Trí tuệ nhân tạo trong kinh doanh lần II – Câu lạc bộ Nghiên cứu trí tuệ nhân tạo và ứng dụng liên ngành (AI4I CLUB) – Đại học Kinh tế – Luật – ĐHQG TP.HCM (UEL)

Sáng ngày 25/05/2025, chung kết cuộc thi AI in Business – Season 2 do CLB Nghiên cứu trí tuệ nhân tạo và ứng dụng liên ngành (AI4I CLUB) thuộc Trường Đại

Xem thêm
Khám phá hàm Lag và Lead trong SQL

Trong phân tích dữ liệu, hàm LAG() và LEAD() sẽ là công cụ hỗ trợ đắc lực cho việc so sánh giá trị hiện tại với giá trị liền trước hoặc liền

Xem thêm