با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره آموزش کامل SQL را دنبال می کنند. ممکن است گاهی اوقت لازم شود که نتایج اجرای یک دستور SQL را بر اساس مقادیر یک فیلد گروه بندی کنید. این کار بیشتر در زمان استفاده از توابع ریاضی (COUNT, MAX, MIN, SUM, AVG) در SQL ، کاربرد دارد. برای درک بهتر این موضوع با ما در آموزش آشنایی با دستور GROUP BY در SQL و دستورات GROUP BY و JOIN ، همراه باشید.
همانطور که اشاره شد. از دستور GROUP BY اغلب در زمان استفاده از توابع MIN, SUM, AVG و… در SQL، برای گروه بندی نتایج بر اساس یک یا چند فیلد، استفاده می شود.
ساختار دستور GROUP BY:
1 2 3 4 5 | SELECT column_name(s) FROM table_name WHERE condition GROUP BY column_name(s) ORDER BY column_name(s); |
در این قسمت، به بخشی از رکوردهای یک جدول که در مثال های این آموزش، از آن، استفاده خواهیم کرد، اشاره می کنیم.
بخشی از رکوردهای جدول “Customers” :
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
۱ | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | ۱۲۲۰۹ | Germany |
۲ | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | ۰۵۰۲۱ | Mexico |
۳ | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | ۰۵۰۲۳ | Mexico |
۴ | Around the Horn | Thomas Hardy | ۱۲۰ Hanover Sq. | London | WA1 1DP | UK |
۵ | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Swede |
مثال زیر تعداد مقادیر فیلد CustomerID مربوط به هر فیلد Country را بصورت گروه بندی شده نمایش می دهد:
1 2 3 | SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country; |
مثال زیر نتایج مثال بالا را بر اساس تعداد فیلد CustomerID، بصورت نزولی مرتب می کند:
1 2 3 4 | SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country ORDER BY COUNT(CustomerID) DESC; |
در این قسمت، به بخشی از رکوردهای دو جدول که در مثال های این آموزش، از آنها، استفاده خواهیم کرد، اشاره می کنیم.
بخشی از رکوردهای جدول “Orders” :
OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
---|---|---|---|---|
۱۰۲۴۸ | ۹۰ | ۵ | ۱۹۹۶-۰۷-۰۴ | ۳ |
۱۰۲۴۹ | ۸۱ | ۶ | ۱۹۹۶-۰۷-۰۵ | ۱ |
۱۰۲۵۰ | ۳۴ | ۴ | ۱۹۹۶-۰۷-۰۸ | ۲ |
بخشی از رکوردهای جدول “Shippers” :
ShipperID | ShipperName |
---|---|
۱ | Speedy Express |
۲ | United Package |
۳ | Federal Shipping |
مثال زیر، تعداد سفارشات (Orders) ارسال شده توسط هر خریدار(Shippers) را نمایش می دهد:
1 2 3 | SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID GROUP BY ShipperName; |
بعد از بررسی مباحث فوق، شما می توانید به راحتی نتایج دستورات SQL را با استفاده از دستور GROUP BY ، بر اساس فیلد مورد نظر، گروه بندی کنید. همچنین می توانید گروه بندی را بصورت صعودی یا نزولی مرتب کنید. امیدواریم که از آموزش آشنایی با دستور GROUP BY در SQL ، استفاده کرده باشید.