%45 تخفیف، با کد daneshjoo روی تمام آموزش ها، بمناسبت روز دانشجو
زمان باقی مانده (تمدید شد)

کاربرد group by در SQL

توابع Aggregate غالباً با عبارت GROUP BY همراه می شوند.


عبارت GROUP BY

Wiki

عبارت GROUP BY در ترکیب با توابع aggregate استفاده می شود تا نتیجه را بر اساس یک یا چند ستون گروه بندی کند.

فرم دستور GROUP BY:

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

مثال:

Wiki

جدول Orders را در زیر داریم:

O_IdOrderDateOrderPriceCustomer
12008/11/121000Hansen
22008/10/231600Nilsen
32008/09/02700Hansen
42008/09/03300Hansen
52008/08/302000Jensen
62008/10/04100Nilsen

می خواهیم مجموع سفارشات هر یک از مشتریان را به دست آوریم.

باید از عبارت GROUP BY برای گروه بندی مشتریان استفاده کنیم.

از دستور زیر استفاده می کنیم:

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

نتیجه به شکل زیر خواهد بود:

CustomerSUM(OrderPrice)
Hansen2000
Nilsen1700
Jensen2000

جالب بود! این طور نیست؟

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

SELECT Customer,SUM(OrderPrice) FROM Orders

نتیجه به شکل زیر خواهد بود:

CustomerSUM(OrderPrice)
Hansen5700
Nilsen5700
Hansen5700
Hansen5700
Jensen5700
Nilsen5700

نتیجه فوق آن چیزی نیست که ما می خواهیم.

توضیح اینکه چرا دستور SELECT فوق نمی تواند مورد استفاده قرار گیرد:

دستور SELECT فوق دو ستون Customer و (SUM(OrderPrice را مشخص کرده است، ستون (SUM(OrderPrice تنها یک مقدار را بر می گرداند که جمع کل مقادیر ستون OrderPrice است، در حالیکه ستون Customer شش مقدار را بر می گرداند. بنابراین این دستور نتیجه درستی به ما نمی دهد. اما همان طور که می بینید با اضافه کردن عبارت GROUP BY این مشکل حل می شود. 


GROUP BY برای بیش از یک ستون

می توانیم عبارت GROUP BY را برای بیش از یک ستون استفاده کنیم، به شکل زیر:

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

کوئری بالا، مجموع سفارشات هر یک از مشتریان در یک روز نمایش خواهد داد، مثلاً اگر آقای Hansen در یک روز بیش از یکبار از فروشگاه خرید کرده باشد، مجموع آنها را خروجی خواهیم دید.


برای مشاهده فیلم های آموزشی مقدماتی تا پیشرفته پایگاه دادهSQLServer کلیک کنید.

آموزش صوتی SQL

بستن
مدرس:
سوال و جواب:

ابزاری که در پیش روی دارید یکی از ابزارهای بسیار کاربردی سایت بیاموز در زمینه آموزش است، این ابزار برای سهولت یادگیری شما کاربران محترم طراحی شده است.

فقط کافی است روی عنوان پاراگراف مورد نظرتان کلیک کنید تا پخش صدا آغاز شود ...!

تبلیغات اینترنتی
دوره های آموزشی راه اندازی کسب و کارهای اینترنتی
تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehiمجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامیپرداخت آنلاین -  بانک ملتمعرفی بیاموز در شبکه سهپرداخت آنلاین - بانک اقتصاد نوینپرداخت آنلاین - بانک سامان