คำถามสัมภาษณ์ Data Analyst 2026: คู่มือครบถ้วน SQL, Python และ Analytics
คู่มือครบถ้วนสำหรับคำถามสัมภาษณ์ data analyst 2026 ครอบคลุม SQL window functions, Python pandas, แนวคิดสถิติ และ business case study พร้อมตัวอย่างโค้ดจริง

คำถามสัมภาษณ์ data analyst ในปี 2026 ทดสอบสามด้านหลัก: ความชำนาญใน SQL การจัดการข้อมูลด้วย Python และการแก้ปัญหาทางธุรกิจ บริษัทอย่าง Google, Meta และ Amazon ได้กำหนดมาตรฐานการคัดกรองทางเทคนิคของตนตามทักษะเหล่านี้ โดย SQL window functions และการดำเนินการ pandas ปรากฏในการสัมภาษณ์มากกว่า 80% ตาม รายงานแนวโน้มการจ้างงานของ Glassdoor 2026
ผู้สมัครที่โดดเด่นที่สุดแสดงให้เห็นไม่เพียงแค่ความรู้ด้าน syntax แต่ยังรวมถึงความสามารถในการอธิบายแนวทางการวิเคราะห์ของตน ผู้สัมภาษณ์ประเมินว่าผู้สมัครสามารถแปลคำถามทางธุรกิจเป็น query ทางเทคนิคและสื่อสารผลการค้นพบกับผู้มีส่วนได้ส่วนเสียที่ไม่ใช่ฝ่ายเทคนิคได้หรือไม่
SQL Window Functions: หัวข้อสัมภาษณ์ที่พบบ่อยที่สุด
Window functions ปรากฏในการคัดกรองทางเทคนิคของ data analyst เกือบทุกครั้ง ต่างจาก aggregate functions ที่รวมแถวเข้าด้วยกัน window functions ทำการคำนวณข้ามชุดของแถวที่เกี่ยวข้องกับแถวปัจจุบันในขณะที่ยังคงรักษาข้อมูลของแต่ละแถวไว้
คำถาม: คำนวณเงินเดือนของพนักงานแต่ละคนเป็นเปอร์เซ็นต์ของเงินเดือนรวมของแผนก
-- employee_salary_percentage.sql
SELECT
employee_id,
department,
salary,
-- SUM as window function preserves each row
ROUND(
salary * 100.0 / SUM(salary) OVER (PARTITION BY department),
2
) AS pct_of_dept_salary
FROM employees
ORDER BY department, pct_of_dept_salary DESC;ประโยค PARTITION BY สร้าง window แยกต่างหากสำหรับแต่ละแผนก เงินเดือนของพนักงานแต่ละคนถูกหารด้วยยอดรวมของแผนกตน ไม่ใช่ยอดรวมของบริษัท ความแตกต่างนี้มักจะดักผู้สมัครที่ใช้ subquery หรือ join แทน
คำถาม: หา running total ของยอดขายตามวันที่ โดยรีเซ็ตทุกเดือน
-- monthly_running_total.sql
SELECT
sale_date,
amount,
SUM(amount) OVER (
PARTITION BY DATE_TRUNC('month', sale_date)
ORDER BY sale_date
-- Default frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
) AS monthly_running_total
FROM sales
ORDER BY sale_date;ผู้สัมภาษณ์คาดหวังให้ผู้สมัครรู้พฤติกรรมเริ่มต้นของ window frame หากไม่มีประโยค ROWS หรือ RANGE ที่ชัดเจน frame จะขยายจากจุดเริ่มต้นของ partition ไปจนถึงแถวปัจจุบัน ซึ่งสร้าง running total ฝึกฝน pattern เหล่านี้กับ โมดูล SQL window functions
CTEs และ Subqueries: การจัดระเบียบ Query ที่ซับซ้อน
Common Table Expressions ทำให้ query อ่านง่ายและบำรุงรักษาได้ ผู้สัมภาษณ์ประเมินว่าผู้สมัครจัดโครงสร้าง query อย่างมีตรรกะหรือเขียนคำสั่งแบบ monolithic
คำถาม: หาลูกค้าที่ทำการซื้อในเดือนติดต่อกัน
-- consecutive_month_purchasers.sql
WITH monthly_purchases AS (
-- Step 1: Get distinct customer-month combinations
SELECT DISTINCT
customer_id,
DATE_TRUNC('month', purchase_date) AS purchase_month
FROM orders
),
with_prev_month AS (
-- Step 2: Add previous purchase month for each customer
SELECT
customer_id,
purchase_month,
LAG(purchase_month) OVER (
PARTITION BY customer_id
ORDER BY purchase_month
) AS prev_purchase_month
FROM monthly_purchases
)
-- Step 3: Filter to consecutive months only
SELECT DISTINCT customer_id
FROM with_prev_month
WHERE purchase_month = prev_purchase_month + INTERVAL '1 month';Pattern นี้รวม CTEs กับ window function LAG การแบ่ง query เป็นขั้นตอนที่มีชื่อแสดงให้เห็นกระบวนการคิด ซึ่งผู้สัมภาษณ์ให้คุณค่าเท่ากับคำตอบที่ถูกต้อง
Python Pandas: พื้นฐานการจัดการข้อมูล
คำถาม Pandas ทดสอบทักษะการทำความสะอาดข้อมูล การรวม และการแปลง ผู้สัมภาษณ์นำเสนอ dataset ที่ยุ่งเหยิงและขอให้ผู้สมัครดึง insight ออกมา
คำถาม: จาก DataFrame ของ session ผู้ใช้ คำนวณระยะเวลา session เฉลี่ยตามกลุ่มผู้ใช้ โดยไม่รวม session ที่สั้นกว่า 10 วินาที
# session_analysis.py
import pandas as pd
def analyze_sessions(df: pd.DataFrame) -> pd.DataFrame:
"""Calculate average session duration by user segment.
Args:
df: DataFrame with columns [user_id, segment, session_start, session_end]
Returns:
DataFrame with average duration per segment
"""
# Calculate duration in seconds
df['duration_seconds'] = (
df['session_end'] - df['session_start']
).dt.total_seconds()
# Filter short sessions and aggregate
return (
df[df['duration_seconds'] >= 10]
.groupby('segment')
.agg(
avg_duration=('duration_seconds', 'mean'),
session_count=('user_id', 'count')
)
.round(2)
.reset_index()
)คำตอบแสดงให้เห็น method chaining การจัดการ datetime และฟังก์ชัน agg พร้อม output ที่มีชื่อ ผู้สัมภาษณ์ตรวจสอบว่าผู้สมัครกรองก่อนการรวมไม่ใช่หลัง ซึ่งจะทำให้ค่าเฉลี่ยเบี่ยงเบน
คำถาม: รวมสอง DataFrame และจัดการค่าที่หายไปอย่างเหมาะสม
# merge_and_clean.py
import pandas as pd
import numpy as np
def merge_user_data(
users: pd.DataFrame,
transactions: pd.DataFrame
) -> pd.DataFrame:
"""Merge user demographics with transaction history.
Users without transactions get total_spent = 0.
Transactions without user data are excluded.
"""
merged = pd.merge(
users,
transactions.groupby('user_id')['amount'].sum().reset_index(),
on='user_id',
how='left' # Keep all users, even without transactions
)
# Fill NaN for users with no transactions
merged['amount'] = merged['amount'].fillna(0)
merged.rename(columns={'amount': 'total_spent'}, inplace=True)
return mergedพารามิเตอร์ how='left' และการจัดการ fillna ที่ชัดเจนแสดงให้เห็นความใส่ใจใน edge cases ผู้สมัครที่ใช้ how='inner' จะสูญเสียผู้ใช้ที่ไม่มีธุรกรรม ซึ่งเปลี่ยนประชากรการวิเคราะห์
พร้อมที่จะพิชิตการสัมภาษณ์ Data Analytics แล้วหรือยังครับ?
ฝึกฝนด้วยตัวจำลองแบบโต้ตอบ, flashcards และแบบทดสอบเทคนิคครับ
แนวคิดสถิติ: สิ่งที่ Analyst ต้องอธิบายได้ชัดเจน
คำถามสถิติประเมินว่าผู้สมัครสามารถนำแนวคิดไปใช้กับปัญหาทางธุรกิจจริงและสื่อสารผลการค้นพบกับผู้มีส่วนได้ส่วนเสียได้หรือไม่
คำถาม: Product manager อ้างว่า checkout flow ใหม่เพิ่ม conversion 5% การทดสอบดำเนินเป็นเวลาหนึ่งสัปดาห์กับผู้ใช้ 10,000 คนต่อ variant ผลลัพธ์นี้มีนัยสำคัญทางสถิติหรือไม่?
คำตอบที่สมบูรณ์กล่าวถึงขนาดตัวอย่าง statistical power และ practical significance:
-
คำนวณ standard error: สำหรับอัตรา conversion SE = sqrt(p(1-p)/n) ด้วย conversion baseline 10% และ n=10,000 SE ประมาณ 0.003
-
คำนวณ z-score: การเพิ่มขึ้น 5% แบบสัมพัทธ์หมายความว่า conversion ใหม่คือ 10.5% ความแตกต่าง 0.5 จุดเปอร์เซ็นต์หารด้วย pooled SE กำหนดนัยสำคัญ
-
พิจารณา practical significance: แม้ว่า p < 0.05 การเพิ่มขึ้น 0.5 จุดเปอร์เซ็นต์อาจไม่คุ้มกับต้นทุนวิศวกรรมของ flow ใหม่
-
ตรวจสอบ confounds: หนึ่งสัปดาห์ครอบคลุม pattern สุดสัปดาห์เทียบกับวันธรรมดา แต่อาจพลาดรอบรายเดือนหรือผลกระทบตามฤดูกาล
ผู้สัมภาษณ์ให้คุณค่ากับผู้สมัครที่ตั้งคำถามกับสมมติฐานมากกว่าคำนวณ p-value แบบกลไก โมดูลหลักการ data visualization ครอบคลุมวิธีการนำเสนอผลการค้นพบเหล่านี้
คำถาม: อธิบายความแตกต่างระหว่าง correlation และ causation พร้อมตัวอย่างทางธุรกิจ
ยอดขายไอศกรีมและการเสียชีวิตจากการจมน้ำมี correlation เป็นบวก ทั้งสองเพิ่มขึ้นในฤดูร้อนเนื่องจากตัวแปร confounding คืออุณหภูมิ การแนะนำให้ลดการผลิตไอศกรีมเพื่อป้องกันการจมน้ำเป็นการเข้าใจผิดว่า correlation คือ causation
ในการวิเคราะห์ธุรกิจ: ค่าใช้จ่ายโฆษณาและรายได้มักมี correlation แต่ความสัมพันธ์อาจสะท้อนว่าบริษัทเพิ่มค่าใช้จ่ายโฆษณาเมื่อการคาดการณ์รายได้แข็งแกร่งอยู่แล้ว ไม่ใช่ว่าโฆษณาขับเคลื่อนรายได้ การสร้าง causation ต้องใช้การทดลองที่ควบคุมหรือเทคนิค causal inference เช่น difference-in-differences
คำถาม Business Case: แปลปัญหาเป็น Query
คำถาม case study ทดสอบความสามารถในการแยกปัญหาทางธุรกิจที่คลุมเครือเป็นขั้นตอนการวิเคราะห์ที่เป็นรูปธรรม
คำถาม: User retention ลดลง 15% เมื่อเดือนที่แล้ว จะสืบสวนอย่างไร?
แนวทางที่มีโครงสร้าง:
-
ตรวจสอบ metric: ยืนยันว่าคำจำกัดความของ retention ตรงกับการคำนวณในอดีต ตรวจสอบปัญหา data pipeline หรือการเปลี่ยนแปลง tracking
-
แบ่งกลุ่มการลดลง: แยก retention ตาม cohort ผู้ใช้ ช่องทางการได้มา ประเภทอุปกรณ์ และภูมิศาสตร์ การลดลง 15% โดยรวมอาจเป็นการลดลง 50% ในกลุ่มเดียวที่ปกปิดความมั่นคงในที่อื่น
-
ระบุเวลา: retention ลดลงทีละน้อยหรือกะทันหัน? การลดลงอย่างกะทันหันบ่งบอกถึงการเปลี่ยนแปลงผลิตภัณฑ์หรือ bug การลดลงทีละน้อยชี้ไปที่ปัจจัยตลาดหรือการแข่งขัน
-
เชื่อมโยงกับเหตุการณ์: จัดแนว timeline กับการเปิดตัวผลิตภัณฑ์ แคมเปญการตลาด การเปิดตัวของคู่แข่ง และเหตุการณ์ภายนอก
-
สร้างสมมติฐาน: จาก pattern การแบ่งกลุ่ม เสนอคำอธิบายที่ทดสอบได้และข้อมูลที่จำเป็นเพื่อยืนยันหรือปฏิเสธแต่ละข้อ
-- retention_by_cohort.sql
WITH user_cohorts AS (
SELECT
user_id,
DATE_TRUNC('week', created_at) AS cohort_week
FROM users
),
weekly_activity AS (
SELECT
user_id,
DATE_TRUNC('week', activity_date) AS activity_week
FROM user_events
)
SELECT
c.cohort_week,
a.activity_week,
COUNT(DISTINCT a.user_id) AS active_users,
COUNT(DISTINCT c.user_id) AS cohort_size,
ROUND(
COUNT(DISTINCT a.user_id) * 100.0 / COUNT(DISTINCT c.user_id),
1
) AS retention_pct
FROM user_cohorts c
LEFT JOIN weekly_activity a
ON c.user_id = a.user_id
AND a.activity_week >= c.cohort_week
GROUP BY c.cohort_week, a.activity_week
ORDER BY c.cohort_week, a.activity_week;Query การวิเคราะห์ cohort นี้สร้างข้อมูลที่จำเป็นสำหรับขั้นตอนที่ 2 โมดูล cohort retention ครอบคลุมรูปแบบต่างๆ ของ pattern นี้
Take-Home Assignments: สิ่งที่ผู้ประเมินพิจารณา
หลายบริษัทรวม take-home assignments ที่ใช้เวลา 2 ถึง 4 ชั่วโมง ผู้ประเมินให้คะแนนงานที่ส่งตามคุณภาพโค้ด ความเข้มงวดในการวิเคราะห์ และการสื่อสาร
Assignment ทั่วไป: จาก dataset ธุรกรรม e-commerce ระบุปัจจัยที่ทำนาย customer churn
งานที่ส่งที่แข็งแกร่งมีลักษณะดังนี้:
- การวิเคราะห์เชิงสำรวจก่อน: สถิติสรุป กราฟการกระจาย และการประเมินค่าที่หายไปก่อนการ modeling
- Feature engineering: สร้าง features ที่เกี่ยวข้องเช่น recency, frequency, monetary value (RFM) และตัวบ่งชี้แนวโน้ม
- เหตุผลการเลือก model: อธิบายว่าทำไม logistic regression หรือ random forest เหมาะกับปัญหา ไม่ใช่แค่รันค่าเริ่มต้น
- แนวทาง validation: ใช้ time-based splits แทน random splits เพื่อหลีกเลี่ยง data leakage
- การสื่อสารที่ชัดเจน: สรุปผู้บริหารที่ด้านบน รายละเอียดทางเทคนิคในภาคผนวก visualizations ที่สนับสนุนข้อสรุป
# churn_analysis_structure.py
import pandas as pd
from sklearn.model_selection import TimeSeriesSplit
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import precision_recall_curve, auc
def create_rfm_features(df: pd.DataFrame, analysis_date: str) -> pd.DataFrame:
"""Create Recency, Frequency, Monetary features per customer."""
analysis_dt = pd.to_datetime(analysis_date)
rfm = df.groupby('customer_id').agg(
recency=('order_date', lambda x: (analysis_dt - x.max()).days),
frequency=('order_id', 'nunique'),
monetary=('order_total', 'sum')
).reset_index()
return rfm
def evaluate_with_time_split(
X: pd.DataFrame,
y: pd.Series,
n_splits: int = 5
) -> list:
"""Evaluate model using time-based cross-validation."""
tscv = TimeSeriesSplit(n_splits=n_splits)
scores = []
for train_idx, val_idx in tscv.split(X):
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X.iloc[train_idx], y.iloc[train_idx])
y_pred_proba = model.predict_proba(X.iloc[val_idx])[:, 1]
precision, recall, _ = precision_recall_curve(y.iloc[val_idx], y_pred_proba)
scores.append(auc(recall, precision))
return scoresโค้ดแสดงให้เห็น feature engineering ที่เกี่ยวข้องกับ domain และวิธีการ validation ที่เหมาะสมสำหรับข้อมูล time-series
ประเด็นสำคัญสำหรับการสัมภาษณ์ Data Analyst ในปี 2026
-
SQL window functions พร้อม
PARTITION BYและORDER BYปรากฏในการคัดกรองทางเทคนิคส่วนใหญ่ ฝึกฝนการคำนวณ running totals เปอร์เซ็นต์ และการจัดอันดับ -
คำถาม Python pandas เน้น method chaining, groupby aggregations และ merge operations พร้อมการจัดการค่าที่หายไปอย่างเหมาะสม
-
คำถามสถิติต้องการการอธิบายแนวคิดในแง่ธุรกิจ ผู้สัมภาษณ์ประเมินความสามารถในการสื่อสาร ไม่ใช่แค่ความรู้ทางเทคนิค
-
คำถาม business case ทดสอบการแยกปัญหาอย่างมีโครงสร้าง เริ่มด้วยการตรวจสอบ metric แล้วแบ่งกลุ่มเพื่อแยกปัญหา
-
Take-home assignments ได้รับคะแนนจากคุณภาพโค้ดและการสื่อสารเท่ากับความถูกต้องในการวิเคราะห์ รวมสรุปผู้บริหารและอธิบายตัวเลือกของตน
-
โมดูล BigQuery ขั้นสูง และ โมดูลพื้นฐาน Python pandas มีคำถามฝึกฝนเพิ่มเติมที่สอดคล้องกับ pattern การสัมภาษณ์ปัจจุบัน
เริ่มฝึกซ้อมเลย!
ทดสอบความรู้ของคุณด้วยตัวจำลองสัมภาษณ์และแบบทดสอบเทคนิคครับ
คุณหาบั๊กใน Data Analytics เจอไหม
โค้ดจริงหนึ่งชิ้น บั๊กที่ซ่อนอยู่หนึ่งจุด วันละหนึ่งครั้ง ลองได้โดยไม่ต้องมีบัญชี

เขียนโดย
Anthony Fillion-Mailletผู้ก่อตั้ง SharpSkill
เป็นนักพัฒนาฟูลสแตกมากว่า 10 ปี ดูแล SharpSkill และรับผิดชอบทุกสิ่งที่เผยแพร่ที่นี่
อัปเดตเมื่อ 8 กันยายน 2569
แท็ก
แชร์
บทความที่เกี่ยวข้อง

คำถามสัมภาษณ์ Data Analyst อิตาลี 2026: SQL, Python และ Analytics
30 คำถามสัมภาษณ์ data analyst สำหรับอิตาลี 2026 Query SQL, Python pandas และ business analytics พร้อมคำตอบที่คาดหวัง

25 คำถามสัมภาษณ์งาน Data Analytics ที่พบบ่อยที่สุดในปี 2026
รวมคำถามสัมภาษณ์งาน Data Analytics ที่ถูกถามบ่อยที่สุดในปี 2026 ครอบคลุม SQL, Python, Power BI, สถิติ และคำถามเชิงพฤติกรรม พร้อมคำตอบโดยละเอียดและตัวอย่างโค้ด

Pandas 3.0 ในปี 2026: API ใหม่, Breaking Changes และคำถามสัมภาษณ์งาน
คู่มือฉบับสมบูรณ์เกี่ยวกับ Pandas 3.0 ครอบคลุม Copy-on-Write, PyArrow string backend, pd.col() expressions, breaking changes และคำถามสัมภาษณ์ data analytics