SQL GROUP BY Statement

زبان SQL وقتی بخوایم داده‌ها رو براساس یک یا چند ستون گروه‌بندی کنیم و روی هر گروه عملیات تجمیعی (مثل COUNT, SUM, AVG, MAX, MIN) انجام بدیم، از GROUP BY استفاده می‌کنیم.

🔹 ساختار کلی

SELECT column1, aggregate_function(column2) FROM table_name GROUP BY column1;
  • GROUP BY رکوردها رو براساس مقدار ستون‌ها دسته‌بندی می‌کنه.

  • باید همراه توابع تجمیعی (Aggregate Functions) مثل COUNT(), SUM(), AVG(), MAX(), MIN() استفاده بشه.

🔹 مثال ساده

جدول: Orders

order_idcustomer_idamount
11500
22300
31200
43400

کوئری:

SELECT customer_id, SUM(amount) AS total_amount FROM Orders GROUP BY customer_id;

📌 خروجی:

customer_idtotal_amount
1700
2300
3400

توضیح: سفارش‌های هر مشتری جمع زده شدن.

🔹 مثال با COUNT

SELECT customer_id, COUNT(order_id) AS order_count FROM Orders GROUP BY customer_id;

📌 تعداد سفارش‌های هر مشتری رو نشون میده.

🔹 مثال با چند ستون

SELECT customer_id, amount, COUNT(*) AS count_orders FROM Orders GROUP BY customer_id, amount;

📌 گروه‌بندی همزمان براساس customer_id و amount.

🔹 GROUP BY + HAVING

  • WHERE → برای فیلتر کردن قبل از گروه‌بندی.

  • HAVING → برای فیلتر کردن بعد از گروه‌بندی.

SELECT customer_id, SUM(amount) AS total_amount FROM Orders GROUP BY customer_id HAVING SUM(amount) > 400;

📌 فقط مشتری‌هایی رو نشون میده که جمع سفارش‌هاشون بیشتر از 400 باشه.

نکات مهم

  • ستون‌هایی که در SELECT استفاده میشن، یا باید داخل GROUP BY باشن یا داخل تابع تجمیعی.

  • HAVING مکمل GROUP BY هست و شبیه WHERE عمل می‌کنه ولی روی نتایج گروه‌بندی.

  • ترتیب اجرای کوئری: WHEREGROUP BYHAVINGORDER BY.