Logo

10 Mini Project และแนวทางต่อยอด

Mini Project และแนวทางต่อยอด

บทนี้รวมสิ่งที่เรียนมาเป็น mini project: วิเคราะห์ยอดขายจากข้อมูลลูกค้าและ order

Schema ตัวอย่าง

CREATE TABLE customers (
  customer_id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  country TEXT
);

CREATE TABLE orders (
  order_id INTEGER PRIMARY KEY,
  customer_id INTEGER,
  order_date DATE,
  status TEXT,
  amount DECIMAL(10, 2)
);

โจทย์ที่ 1: ยอดขายรวม

SELECT
  COUNT(*) AS order_count,
  SUM(amount) AS total_amount,
  AVG(amount) AS average_amount
FROM orders
WHERE status = 'paid';

โจทย์ที่ 2: ยอดขายแยกตามลูกค้า

SELECT
  c.customer_id,
  c.name,
  SUM(o.amount) AS total_amount
FROM customers AS c
INNER JOIN orders AS o
  ON c.customer_id = o.customer_id
WHERE o.status = 'paid'
GROUP BY c.customer_id, c.name
ORDER BY total_amount DESC;

โจทย์ที่ 3: ลูกค้าที่ไม่เคยซื้อ

SELECT
  c.customer_id,
  c.name
FROM customers AS c
LEFT JOIN orders AS o
  ON c.customer_id = o.customer_id
WHERE o.order_id IS NULL;

โจทย์ที่ 4: Top Customer ด้วย CTE

WITH customer_sales AS (
  SELECT
    customer_id,
    SUM(amount) AS total_amount
  FROM orders
  WHERE status = 'paid'
  GROUP BY customer_id
)
SELECT
  c.name,
  s.total_amount
FROM customer_sales AS s
INNER JOIN customers AS c
  ON s.customer_id = c.customer_id
ORDER BY s.total_amount DESC
LIMIT 10;

Checklist เวลาเขียน SQL วิเคราะห์ข้อมูล

  1. เริ่มจาก SELECT * LIMIT 10 เพื่อดูหน้าตาข้อมูล
  2. ตรวจสอบความหมายของ column
  3. กรองข้อมูลที่ไม่ต้องการออก
  4. รวมข้อมูลด้วย GROUP BY
  5. Join เฉพาะ table ที่จำเป็น
  6. ตั้ง alias ให้อ่านง่าย
  7. ตรวจสอบจำนวน row หลัง join

แนวทางต่อยอด

หลังจบพื้นฐานนี้ สามารถต่อยอดไปเรื่องต่อไปนี้

  • Window function เช่น ROW_NUMBER, LAG, SUM() OVER
  • Data warehouse และ partition
  • Query optimization
  • Data modeling
  • dbt สำหรับจัดการ SQL transformation
  • เชื่อม SQL กับ Python เพื่อทำ data pipeline

แบบฝึกหัดปิดคอร์ส

  1. หายอดขายรายวัน
  2. หาประเทศที่มียอดขายสูงสุด
  3. หาลูกค้าที่มียอดซื้อเฉลี่ยมากกว่า 1000
  4. หาจำนวน order แยกตาม status
  5. เขียน query แบบ CTE อย่างน้อย 1 ข้อ