ایس کیو ال GROUP BY جملات

مجموعی فانکشن (مثلاً SUM) GROUP BY جملہ کو اضافہ کرنا ضروری ہوتا ہے۔

GROUP BY جملہ

GROUP BY جملہ، مجموعی فانکشنوں کو متحد کرنے کے لئے استعمال کی جاتی ہے، ایک یا کثیر تر ستونوں کی بنیاد پر نتائج کا گروپ بناتا ہے۔

SQL GROUP BY گرامر

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name

SQL GROUP BY مثال

ہم اس "Orders" جدول کو رکھتے ہیں:

O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter

حالا، ما می‌خواهیم مبلغ کل هر مشتری (کل سفارش) را پیدا کنیم.

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

ما از جمله SQL زیر استفاده می‌کنیم:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer

نتایج بالا مانند این است:

Customer SUM(OrderPrice)
Bush 2000
Carter 1700
Adams 2000

بسیار خوب است، نه؟

بیایید ببینیم اگر GROUP BY را حذف کنیم چه اتفاقی می‌افتد:

SELECT Customer,SUM(OrderPrice) FROM Orders

نتایج بالا مانند این است:

Customer SUM(OrderPrice)
Bush 5700
Carter 5700
Bush 5700
Bush 5700
Adams 5700
Carter 5700

نتایج بالا به دلخواه ما نیست.

پس چرا نمی‌توانیم از این جمله SELECT استفاده کنیم؟ توضیح زیر: جمله SELECT دو ستون را مشخص کرده است (Customer و SUM(OrderPrice)). "SUM(OrderPrice)" یک مقدار جداگانه را برمی‌گرداند (总计 ستون "OrderPrice"), در حالی که "Customer" شش مقدار را برمی‌گرداند (هر مقدار برای هر ردیف در جدول "Orders"). بنابراین نمی‌توانیم نتیجه درست را دریافت کنیم. اما، شما دیدید که جمله GROUP BY این مشکل را حل می‌کند.

GROUP BY یک یا چند ستون

ما می‌توانیم به یک یا چند ستون نیز GROUP BY جمله را اعمال کنیم، مانند این:

SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate