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


نحوه استفاده از HAV ING در SQL Server

نحوه استفاده از HAV ING در SQL Server
HAVING در SQL Server مشخص می کند که دستور SQL باید فقط ردیف هایی را بازگرداند که توابع Aggregate، با شرایط تعیین شده مطابقت داشته باشند. در ادامه مثال هایی از HAVING را مشاهده خواهید کرد که هم با طرز کار و هم نحوه استفاده آن آشنا خواهید شد.

سیستم یکپارچۀ سازمانی راهکار
Syntax استفاده از HAVING به فرم زیر می باشد.



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

COLUMN_1, COLUMN_2 در یک aggregate function قرار نگرفته اند از این رو باید در GROUP BY گنجانده شوند.
AGGREGATE_FUNCTION می تواند توابعی همچون MAX یا MIN یا AVG یا SUM یا COUNT باشد.
WHERE CONDITION شرط مورد نظر را در WHERE مشخص می کنید که اختیاری می باشد.
HAVING شرطی است که فقط برای Result های Aggregate شده اعمال می شود تا گروه های ردیف برگشتی را محدود کند.

خب، برای شروع کار، ابتدا یک جدول با نام ITEM_DETAILS ایجاد خواهیم کرد.

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')

نحوه استفاده از HAV ING در SQL Server
در اسکریپت زیر، فقط مواردی را برمی گرداند که کل مقدار خریداری شده ی آنها از 1500 بیشتر باشد.

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

نحوه استفاده از HAV ING در SQL Server
همانطور که مشاهده می کنید ، دو مورد را برمی گرداند که مقدار کل خریداری شده برای آنها بیشتر از 1500 است.
همین مورد فوق را در گروه اسکریپت SQL می خواهیم درک کنیم.
Group By مجموع مقدار خرید را برای هر مورد جداگانه جمع می کند. در اسکریپت زیر هم همین مورد را مشاهده خواهید کرد.

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

نحوه استفاده از HAV ING در SQL Server
پس از آن Having نتیجه جمع شده از GROUP BY را برای بررسی شرایط تعیین شده فیلتر می کند و فقط مواردی را که کل مقدار خریداری شده آنها بیشتر از 1500 باشد در خروجی می توانید مشاهده کنید.
در واقع فیلتر دوم پس از GROUP BY توسط HAVING برقرار می شود.

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

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

نحوه استفاده از HAV ING در SQL Server
در اسکریپت زیر مقدار کل خریداری شده را برای هر مورد که تعداد کل تعداد خریداری شده آنها بیش از 6 باشد را برمی گرداند.

SELECT ITEM , SUM(ITEM_QTY) AS TOTAL_QTY, COUNT(ITEM_QTY) AS TOTAL_QTY_CNT
FROM dbo.ITEM_DETAILS
GROUP BY Item
HAVING COUNT(ITEM_QTY)>6

نحوه استفاده از HAV ING در SQL Server
همانطور که مشاهده می کنید، تعداد کل تعداد خریداری شده در ستون TOTAL_QTY_CNT، برای همه موارد بیشتر از 6 است.


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

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

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


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