PDA

View Full Version : aggregate



vahid_1360
چهارشنبه 14 بهمن 1388, 12:52 عصر
با سلام خدمت دوستان محترم
می خواستم بدانم کسی از عملکرد دستورات
CHECKSUM (http://barnamenevis.org/forum/e26d3339-845c-49c2-9d89-243376874c13.htm) و

CHECKSUM (http://barnamenevis.org/forum/e26d3339-845c-49c2-9d89-243376874c13.htm) AGG خبر دارد.
موفق باشید

AminSobati
شنبه 17 بهمن 1388, 23:04 عصر
سلام دوست عزیزم،
Checksum عملی مشابه Hash کردن هست که از یک رشته، عدد بدست میاره. در حالت Aggregation این عمل رو میتونه روی مقادیر یک گروه انجام بده

hamed.rezaei
شنبه 17 بهمن 1388, 23:23 عصر
سلام;
اگه ممکنه یک مثال کاربردی هم بزنید
ممنون

AminSobati
یک شنبه 18 بهمن 1388, 08:32 صبح
سلام،
اگر SQL Server 2008 نصب کردین مثالش در این آدرس هست:

ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_6tsql/html/cdede70c-4eb5-4c92-98ab-b07787ab7222.htm

محمد سلیم آبادی
چهارشنبه 21 بهمن 1388, 22:51 عصر
با سلام خدمت دوستان محترم
می خواستم بدانم کسی از عملکرد دستورات
CHECKSUM (http://barnamenevis.org/forum/e26d3339-845c-49c2-9d89-243376874c13.htm) و

CHECKSUM (http://barnamenevis.org/forum/e26d3339-845c-49c2-9d89-243376874c13.htm) AGG خبر دارد.
موفق باشید

با کمک این تابع به سادگی می توانیم مقادیر را با عملگر = مقایسه کنیم. مثلا مقادیر Null را نمی توانیم با = بکار بگیریم و مجبوریم از عملگر IS NULL یا توابع COALASCE و ISNULL در صورتی که با این تابع این مشکل برطرف میشه.

بطور مثال در عملگر مجموعه ای اشتراک null ها هم با یکدیگر مقایسه می شن. حالا اگر بخواهین یک راه حل جایگزین با JOIN طراحی کنیم باید Null ها هم بایکدیگر مقایسه کنیم در این صورت از این تابع استفاده می کنیم به این شکل:



--INTERSECT
SELECT Country, Region, City
FROM Customers
INTERSECT
SELECT Country, Region, City
FROM Employees;


--JOIN
SELECT DISTINCT C.Country, C.Region, C.City
FROM Customers AS C
JOIN Employees AS E
ON COALESCE(C.Country, '1') = COALESCE(E.Country, '1')
AND COALESCE(C.Region, '1') = COALESCE(E.Region, '1')
AND COALESCE(C.City, '1') = COALESCE(E.City, '1');

--JOIN
SELECT DISTINCT C.Country, C.Region, C.City
FROM Customers AS C
JOIN Employees AS E
ON CHECKSUM(C.Country) = CHECKSUM(E.Country)
AND CHECKSUM(C.Region) = CHECKSUM(E.Region)
AND CHECKSUM(C.City) = CHECKSUM(E.City);