خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


استفاده از GROUP BY در SQL Server

استفاده از GROUP BY در SQL Server
در اس کیو ال سرور، عبارت GROUP BY برای ترتیب و نمایش داده های یکسان در گروه ها با کمک Aggregate function ها استفاده می شود. در واقع ردیف هایی که دارای مقادیر یکسان هستند بطور خلاصه در یک ردیف نشان می دهد(به عنوان مثال یافتن تعداد مشتریان هر استان یا هر کشور).

نرم افزار سامانه مودیان راهکار
عبارت GROUP BY معمولاً با aggregate function مانند(COUNT ، MAX ، MIN ، SUM ، AVG) برای گروه بندی مجموعه نتایج توسط یک یا چند ستون استفاده می شود.


Syntax استفاده از GROUP BY بصورت زیر می باشد:

SELECT COLUMN_1, COLUMN_2, ..,   AGGREGATE_FUNCTION (COLUMN_NAME)
FROM TABLE_NAME [WHERE CONDITION]
GROUP BY COLUMN_1, COLUMN_2, ..,
ORDER BY ASC|DESC

COLUMN_1 و COLUMN_2 و … در یک aggregate function خلاصه نشده اند و در GROUP BY باید گنجانده شوند. اگر نیاز به وجود شرطی در کوئری داشته باشیم، از WHERE استفاده می کنیم و ORDER BY برای نمایش صعودی یا نزولی رکوردها مورد استفاده قرار می گیرد که اولا اختیاری بوده و ثانیا به صورت پیشفرض به صورت صعودی رکوردها را نمایش می دهد.

خب، در ادامه کار با نحوه استفاده از Group By آشنا خواهیم شد. برای این منظور یک جدول ایجاد کرده و مقادیری را در آن اضافه می کنیم. لطفا به نام فیلدها و به مقادیری مه در آنها insert می شود، دقت کنید که در ادامه کار بدانها مراجعه خواهیم کرد.


CREATE TABLE dbo.ITEM_DETAILS (
ID INT NOT NULL, ITEM VARCHAR(50), ITEM_QTY INT, ITEM_PURCHASED_DATE DATETIME)

INSERT INTO dbo.ITEM_DETAILS (ID, ITEM, ITEM_QTY, ITEM_PURCHASED_DATE)
VALUES (1, 'Scanner', 300, '2019-12-01 00:00:00.000'),
(2, 'Scanner', 250, '2019-12-10 00:00:00.000'),
(3, 'Scanner', 110, '2019-11-12 00:00:00.000'),
(4, 'Scanner', 110, '2019-09-19 00:00:00.000'),
(5, 'Scanner', 280, '2019-09-25 00:00:00.000'),
(6, 'Scanner', 180, '2019-08-15 00:00:00.000'),
(7, 'Scanner', 180, '2019-07-08 00:00:00.000'),
(8, 'Pen Drive', 360, '2019-12-15 00:00:00.000'),
(9, 'Pen Drive', 270, '2019-09-11 00:00:00.000'),
(10, 'Pen Drive', 210 ,'2019-08-22 00:00:00.000'),
(11, 'Pen Drive', 190 ,'2019-08-19 00:00:00.000'),
(12, 'Pen Drive', 480 ,'2019-07-15 00:00:00.000'),
(13, 'Pen Drive', 680, '2019-06-25 00:00:00.000'),
(14, 'Pen Drive', 120, '2019-06-18 00:00:00.000'),
(15, 'Hard Disk', 270, '2019-09-19 00:00:00.000'),
(16, 'Hard Disk', 210, '2019-08-12 00:00:00.000'),
(17, 'Hard Disk', 190, '2019-08-29 00:00:00.000'),
(18, 'Hard Disk', 480, '2019-07-25 00:00:00.000'),
(19, 'Hard Disk', 680, '2019-06-15 00:00:00.000'),
(20, 'Hard Disk', 120, '2019-06-28 00:00:00.000')

استفاده از GROUP BY در SQL Server

GROUP BY With Aggregate Functions


GROUP BY With SUM

مثلا با استفاده از با تابع SUM در Group By قصد داریم جمه کل خریدها را نشان دهیم:

SELECT ITEM , SUM(ITEM_QTY) AS  TOTAL_QTY
FROM dbo.ITEM_DETAILS
GROUP BY Item

استفاده از GROUP BY در SQL Server

GROUP BY WITH MAX()

نمایش آخرین تاریخ خریداری شده برای مورد خاص:

SELECT ITEM, MAX(ITEM_PURCHASED_DATE) AS LAST_PURCHASED_DATE
FROM dbo.ITEM_DETAILS
GROUP BY ITEM

استفاده از GROUP BY در SQL Server

GROUP BY WITH MIN()

نمایش اولین تاریخ خریداری شده برای موردی خاص:

SELECT ITEM, MIN(ITEM_PURCHASED_DATE) AS FIRST_PURCHASED_DATE
FROM dbo.ITEM_DETAILS
GROUP BY ITEM

استفاده از GROUP BY در SQL Server

GROUP BY WITH COUNT()

نمایش تعداد کل رکوردها برای هر آیتم یا کالا در جدول:

SELECT ITEM, COUNT(ID) AS Cnt
FROM dbo.ITEM_DETAILS
GROUP BY ITEM

استفاده از GROUP BY در SQL Server

GROUP BY WITH AVG()

نمایش مقدار متوسط خریداری شده برای هر آیتم یا کالا:

SELECT ITEM, AVG(ITEM_QTY) AS AVG_QTY
FROM dbo.ITEM_DETAILS
GROUP BY ITEM

استفاده از GROUP BY در SQL Server

Lets take few more complex queries using GROUP BY

نمایش مقدار کل خریداری شده را در هر ماه - سالانه و مرتب سازی بر اساس ماه و سال به صورت نزولی:

SELECT MONTH(ITEM_PURCHASED_DATE) AS MONTH, YEAR(ITEM_PURCHASED_DATE) AS YEAR,
SUM(ITEM_QTY) AS TTL_QTY
FROM dbo.ITEM_DETAILS
GROUP BY MONTH(ITEM_PURCHASED_DATE), YEAR(ITEM_PURCHASED_DATE)
ORDER BY YEAR(ITEM_PURCHASED_DATE) DESC, MONTH(ITEM_PURCHASED_DATE) DESC

استفاده از GROUP BY در SQL Server
همانطور که مشاهده می کنید تعداد کل مقدار خریداری شده در هر ماه و سال بصورت نزولی یا desc نمایش داده شده است.

Multiple aggregation with GROUP By clause

نمایش مقدار کل ، تعداد ، مقدار متوسط ، اولین و آخرین تاریخ خریداری شده برای مورد یا آیتم خاص:

SELECT ITEM,
MIN(ITEM_PURCHASED_DATE) AS FIRST_PURCHASED_DATE,
MAX(ITEM_PURCHASED_DATE) AS LAST_PURCHASED_DATE,
SUM(ITEM_QTY) AS TOTAL_QTY,
COUNT(ID) AS COUNT,
AVG(ITEM_QTY) AS AVG_QTY
FROM dbo.ITEM_DETAILS
GROUP BY ITEM

استفاده از GROUP BY در SQL Server

نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز