SQL مخفف Structured Query Language (زبان پرسوجوی ساختاریافته) است. شما میتوانید از این زبان برای تعامل با پایگاههای داده رابطهای استفاده کنید. این زبان مجموعهای قوی از دستورات را برای دستکاری و بازیابی دادهها فراهم میکند. در میان این دستورات، توابع تجمیعی SQL نقش مهمی در کمک به شما برای خلاصهسازی و تحلیل دادهها بهصورت کارآمد ایفا میکنند. متخصصان داده مدرن با چالشهای بیسابقهای در کار با مجموعههای داده عظیم که نیاز به تکنیکهای خلاصهسازی پیچیده دارند، مواجه هستند. چه در حال محاسبه ارزش طول عمر مشتری، تحلیل روندهای فصلی یا تولید داشبوردهای مدیریتی باشید، تسلط بر توابع تجمیعی SQL برای تبدیل دادههای خام به بینشهای کسبوکاری عملی ضروری است. این راهنمای مناسب برای مبتدیان، یک مرور دقیق از توابع تجمیعی پرسوجوی SQL، سینتکس کلی آنها و نمونههای عملی متنوع برای درک بهتر ارائه میدهد. همچنین تکنیکهای پیشرفته و بهترین شیوهها که میتوانند عملکرد پرسوجو و قابلیتهای تحلیلی شما را بهطور قابلتوجهی بهبود بخشند، بررسی خواهیم کرد.
تجمیع SQL چیست؟
تجمیع SQL فرآیندی است که شامل استفاده از پرسوجوهای SQL برای انجام محاسبات خاص روی مجموعههای داده بزرگ و بازگرداندن یک مقدار واحد میشود. شما میتوانید این کار را با استفاده از توابعی مانند COUNT()، SUM()، AVG()، MIN() و MAX() پیادهسازی کنید. تجمیع SQL دادههای تراکنشی جزئی را به خلاصههای معنادار تبدیل میکند و با استفاده از روشهای ریاضی، ردیفها را بر اساس ویژگیهای مشترک یکپارچه میکند. این عملیات از اصول معماری خاصی پیروی میکنند که در آن توابع تجمیعی همراه با بند GROUP BY برای تقسیمبندی مجموعههای داده بر اساس ابعاد دستهای عمل میکنند. فرآیند تجمیع، رکوردهایی با مقادیر گمشده (NULL) در ستونهای گروهبندیشده را در یک گروه واحد قرار میدهد، به جای اینکه آنها را حذف کند، که این امر بهطور اساسی با رویکردهای مبتنی بر پیوستن (join) متفاوت است. درک تجمیع زمانی حیاتی میشود که با مجموعههای داده سازمانی کار میکنید که محاسبات دستی در آنها غیرممکن است. به عنوان مثال، محاسبه درآمد سهماهه در میان هزاران تراکنش، تعیین میانگین امتیاز رضایت مشتری از میلیونها پاسخ نظرسنجی، یا شناسایی دورههای اوج استفاده از دادههای نظارتی مداوم، همگی به تکنیکهای تجمیع کارآمد وابسته هستند.
چگونه از تجمیع SQL استفاده میکنید؟
برای استفاده از توابع تجمیعی در SQL، باید پرسوجویی بنویسید که یک یا چند تابع را به ستونهای انتخابشده اعمال کند. این توابع با دستور SELECT و بندهای GROUP BY و HAVING استفاده میشوند که به شما امکان میدهند نتایج پرسوجوی خود را با گروهبندی دادهها به زیرمجموعهها پالایش کنید. به عنوان مثال، میتوانید درآمد کل تولیدشده در هر منطقه را محاسبه کنید. پایگاههای داده مدرن خط لولههای تجمیع چندرشتهای را پیادهسازی میکنند که کار را به حالتهای جزئی موازی تجزیه میکنند تا عملکرد را به حداکثر برسانند. فرآیند اجرا شامل سه فاز متمایز است: توابع انتقال اولیه که ردیفهای خام را پردازش میکنند، توابع ترکیبی که خروجیهای کارگر را ادغام میکنند، و توابع نهایی که نتایج قابل استفاده تولید میکنند. این معماری بهویژه هنگام کار با مجموعههای داده بزرگ که پردازش تکرشتهای باعث تأخیرهای غیرقابلقبول میشود، اهمیت پیدا میکند. مفهوم مهمی که باید قبل از شروع استفاده از تجمیع بدانید، ارجاعات ستون است. ارجاع ستون به ستونی در جدول شما اشاره دارد که دادههایی را که میخواهید تجمیع کنید، نگه میدارد. به عنوان مثال، قطعه کد زیر برای یافتن حداکثر حقوق دریافتی توسط کارمندان است:
sql
SELECT MAX(salary)
FROM employees;
در اینجا، salary ارجاع ستون است و employees جدولی است که ستون به آن تعلق دارد. هنگام طراحی پرسوجوهای تجمیعی، توزیع دادهها و کاردینالیتی (تعداد مقادیر متمایز) ستونهای گروهبندیشده را در نظر بگیرید. ستونهای گروهبندی با کاردینالیتی بالا به حافظه بیشتری برای نتایج میانی نیاز دارند، در حالی که ستونهای با کاردینالیتی پایین پردازش موازی کارآمدتری را امکانپذیر میکنند. درک این ویژگیها به شما کمک میکند پرسوجوهایی را ساختار دهید که بهطور مؤثری از بهینهسازیهای پایگاه داده بهره ببرند.
سینتکس تجمیع و گروهبندی چیست؟
sql
SELECT aggregate_function_name(column_name), column1, column2, …
FROM table_name
WHERE condition
GROUP BY column1, column2, …
ORDER BY column1, column2, … ;
بیایید این را تجزیه کنیم:
- SELECT – ستونهایی را که میخواهید برای انجام توابع تجمیعی و سایر عملیات داده بازیابی کنید، مشخص میکند.
- aggregate_function_name(column_name) – نتیجه تابع تجمیعی اعمالشده به ستون مشخصشده را برمیگرداند. اگر DISTINCT را در داخل پرانتزها قرار دهید، نتیجه فقط مقادیر داده منحصربهفرد را در نظر میگیرد؛ در غیر این صورت، همه رکوردها در نظر گرفته میشوند.
- FROM table_name – نام جدولهایی را که دادهها از آنها استفاده یا دستکاری میشوند، بیان میکند.
- WHERE – به شما امکان میدهد ردیفها را بر اساس یک شرط قبل از اعمال تجمیع فیلتر کنید.
- GROUP BY column1, column2, … – نقاط داده با ویژگیهای مشابه را به گروههای مختلف دستهبندی میکند و توابع تجمیعی SQL را روی هر یک از آنها اعمال میکند.
- ORDER BY column1, column2, … – مجموعه نتایج را مرتب میکند و معمولاً پس از تجمیع استفاده میشود.
ترتیب اجرای این بندها دنباله خاصی را دنبال میکند که مستقیماً بر عملکرد و نتایج تأثیر میگذارد. موتور پایگاه داده ابتدا شرایط WHERE را پردازش میکند تا اندازه مجموعه داده را قبل از عملیات گروهبندی پرهزینه کاهش دهد. این فیلتر کردن بهطور قابلتوجهی عملکرد را با محدود کردن حجم دادهای که نیاز به پردازش تجمیعی دارد، بهبود میبخشد. درک تعامل بندها برای پرسوجوهای تحلیلی پیچیده حیاتی است. بند HAVING که نتایج تجمیعی را فیلتر میکند، پس از عملیات GROUP BY اجرا میشود و میتواند مستقیماً به توابع تجمیعی ارجاع دهد. این بهطور اساسی با بندهای WHERE که روی ردیفهای جداگانه قبل از گروهبندی عمل میکنند، متفاوت است. یک مثال عملی از تجمیع و گروهبندی میتواند استفاده از این سینتکس را برای شما آسانتر کند. جدولی به نام sales را با ستونهای product، units و location در نظر بگیرید، همانطور که در زیر نشان داده شده است. پرسوجو برای شناسایی مقدار کل هر محصول فروختهشده در هر مکان:
sql
SELECT product,
location,
SUM(units) AS total_quantity
FROM sales
GROUP BY location, product
ORDER BY location, product;
SELECT ستونهای product و location را بازیابی میکند و مجموع units را بهعنوان total_quantity محاسبه میکند. GROUP BY اطمینان میدهد که جمعبندی بهطور جداگانه برای هر ترکیب منحصربهفرد از product و location انجام شود و ORDER BY مجموعه نتایج را مرتب میکند.
توجه: AS برای اختصاص یک نام مستعار به ستون خلاصهشده استفاده میشود.
محبوبترین توابع تجمیعی SQL کدامند؟
SQL چندین تابع تجمیعی داخلی ارائه میدهد که میتوانید از آنها برای استخراج بینشها و سادهسازی تصمیمگیریهای کسبوکاری مختلف استفاده کنید.
- COUNT() – تعداد کل ردیفها در یک مجموعه داده را برمیگرداند.
- SUM() – مجموع کل یک ستون را پس از گروهبندی محاسبه میکند.
- AVG() – میانگین یک ستون را پس از گروهبندی پیدا میکند.
- MIN() – کوچکترین مقدار در یک گروه را ارائه میدهد.
- MAX() – بزرگترین مقدار موجود در یک گروه را برمیگرداند.
این توابع بنیادی هسته اکثر پرسوجوهای تحلیلی را تشکیل میدهند، اما رفتار آنها در سناریوهای مختلف بهطور قابلتوجهی متفاوت است. همه توابع تجمیعی SQL به جز COUNT(*) مقادیر NULL را در طول محاسبات نادیده میگیرند، که اگر بهدرستی درک نشود، میتواند به نتایج غیرمنتظره منجر شود. به عنوان مثال، AVG(salary) میانگین را فقط در میان کارمندانی با مقادیر حقوق غیر NULL محاسبه میکند، که اگر بسیاری از رکوردها دادههای حقوق گمشده داشته باشند، ممکن است میانگین واقعی را بیش از حد برآورد کند. ویژگیهای عملکردی نیز بین این توابع متفاوت است. SUM() و AVG() روی ستونهای عددی صحیح سریعتر از فرمتهای اعشاری اجرا میشوند به دلیل بهینهسازی سختافزاری. نوع COUNT_BIG() بهطور خاص برای تخمین کاردینالیتی در مجموعههای داده چند میلیارد ردیفی با بازگرداندن نوع داده bigint طراحی شده است و از خطاهای سرریز عدد صحیح در تحلیلهای مقیاس بزرگ جلوگیری میکند. درک این تفاوتها هنگام ساخت سیستمهای تحلیلی تولیدی که دقت و عملکرد مستقیماً بر تصمیمگیریهای کسبوکاری تأثیر میگذارند، ضروری است. مدیریت مناسب NULL، انتخاب نوع داده مناسب و آگاهی از رفتارهای خاص تابع، نتایج تجمیعی قابلاعتمادی را در مجموعههای داده متنوع تضمین میکند.
توجه: همه توابع تجمیعی SQL به جز COUNT مقادیر NULL را نادیده میگیرند.
توابع تجمیعی SQL چگونه با مثال کار میکنند؟
توابع تجمیعی SQL به شما کمک میکنند چندین رکورد با دادههای مشابه را پردازش کنید و از تلاشهای هوش تجاری شما پشتیبانی کنند. در این بخش، توضیح سادهای از نحوه اجرای توابع تجمیعی در SQL همراه با مثالها ارائه میشود. برای موضوعات پیشرفته SQL، میتوانید به این مقاله نیز مراجعه کنید.
- COUNT() سینتکس کلی: COUNT(*)، COUNT(DISTINCT column_name) یا COUNT(column_name). تابع COUNT() تمایزات مهمی را نشان میدهد که بر دقت نتایج تأثیر میگذارد. COUNT(*) همه ردیفها، از جمله آنهایی که مقادیر NULL دارند، را میشمارد، در حالی که COUNT(column) فقط مقادیر غیر NULL در ستون مشخصشده را میشمارد. این تفاوت هنگام ارزیابی کامل بودن دادهها یا محاسبه درصد بر اساس کل رکوردها در مقابل رکوردهای معتبر حیاتی است. ملاحظات عملکردی هنگام استفاده از COUNT(DISTINCT column) روی ستونهای با کاردینالیتی بالا مطرح میشود، زیرا این نیاز به مرتبسازی و حذف تکرار قبل از شمارش دارد. برای مجموعههای داده بزرگ، این عملیات در مقایسه با رویکردهای پیشتجمیعی یا روشهای شمارش تقریبی میتواند از نظر محاسباتی پرهزینه شود. توجه: هنگامی که از ستاره (*) استفاده میکنید، COUNT مقادیر NULL را نیز در نظر میگیرد. اگر نام ستون را ذکر کنید، NULL را نادیده میگیرد. مثال: شمارش تعداد کارمندان در بخش بازاریابی
sql
SELECT COUNT(employee_id) AS “Marketing Employees”
FROM employees
WHERE LOWER(department) = ‘marketing’;
LOWER مقایسه را بدون حساسیت به حروف بزرگ و کوچک میکند و نتایج دقیق را تضمین میکند.
- SUM() سینتکس کلی: SUM(column_name). فقط روی ستونهای عددی کار میکند و میتوانید یک عبارت را شامل کنید. تابع SUM() نیاز به توجه دقیق به انواع دادهها برای جلوگیری از خطاهای سرریز و حفظ دقت دارد. هنگام کار با مقادیر پولی، استفاده از نوع داده DECIMAL دقت دقیق را تضمین میکند، در حالی که انواع FLOAT/REAL ممکن است خطاهای گرد کردن را ایجاد کنند که در مجموعههای داده بزرگ تجمع مییابند. مثال: محاسبه حقوق کارمندان در بخشهای فروش و بازاریابی پس از افزایش ۱۰ درصدی
sql
SELECT department,
SUM(salary * 1.1) AS new_salary
FROM employees
WHERE department IN (‘sales’, ‘marketing’)
GROUP BY department;
- AVG() سینتکس کلی: AVG(column_name). روی ستونهای عددی کار میکند و میتواند در زیرپرسوجوها استفاده شود. تابع AVG() بهطور خودکار مقادیر NULL را از محاسبات حذف میکند، که اگر بخش قابلتوجهی از دادهها مقادیر گمشده داشته باشند، میتواند نتایج را منحرف کند. درک این رفتار به جلوگیری از تفسیر نادرست محاسبات میانگین، بهویژه در مجموعههای داده با رکوردهای ناقص، کمک میکند. مثال: فهرست مشتریانی که میانگین کل سفارش آنها از میانگین کلی بیشتر است
sql
SELECT customer_id,
AVG(order_total) AS avg_order_total
FROM customers
GROUP BY customer_id
HAVING avg_order_total >
(SELECT AVG(order_total) FROM customers);
- MIN() و MAX() سینتکس کلی: MIN(column_name) و MAX(column_name). این توابع با انواع دادههای مختلف (عددی، تاریخ، متن) کار میکنند. این توابع با استفاده از منطق مقایسه مناسب، تطبیقپذیری خود را در انواع دادههای مختلف نشان میدهند. برای مقادیر عددی، از مقایسه ریاضی استفاده میکنند؛ برای تاریخها، مقایسه زمانی؛ و برای مقادیر متنی، مرتبسازی لغوی بر اساس تنظیمات مرتبسازی. مثال: شناسایی ارزانترین و گرانترین محصولات در هر دسته
sql
SELECT MIN(unit_cost) AS cheapest,
MAX(unit_cost) AS most_expensive,
category_id
FROM products
GROUP BY category_id;
تکنیکهای پیشرفته تجمیع SQL چیست؟
فراتر از توابع تجمیعی پایه، پایگاههای داده SQL مدرن قابلیتهای تجمیعی پیچیدهای را ارائه میدهند که نیازهای تحلیلی تخصصی و چالشهای عملکردی را برطرف میکنند. این تکنیکهای پیشرفته هنگام کار با مجموعههای داده در مقیاس بزرگ، دادههای جریانی یا بارهای کاری تحلیلی پیچیده ضروری هستند.
تجمیع تقریبی برای دادههای بزرگ
توابع تجمیع تقریبی دقت را با عملکرد در سناریوهای داده بزرگ معامله میکنند و امکان تحلیل مجموعههای داده عظیم را فراهم میکنند که محاسبات دقیق در آنها بیش از حد پرهزینه خواهد بود. تابع APPROX_COUNT_DISTINCT() نمونهای از این رویکرد است که از الگوریتمهای احتمالی مانند HyperLogLog برای تخمین مقادیر منحصربهفرد با حداقل سربار حافظه استفاده میکند.
sql
SELECT region,
APPROX_COUNT_DISTINCT(customer_id) AS estimated_customers
FROM sales
GROUP BY region;
این تابع مجموعههای داده را ۳ تا ۵ برابر سریعتر از COUNT(DISTINCT) دقیق پردازش میکند، در حالی که تحمل خطای معمولاً کمتر از ۲٪ را حفظ میکند. پیادهسازی Google BigQuery میتواند ترابایتهای داده را در چند ثانیه با استفاده از این تکنیکها پردازش کند و تحلیل بلادرنگ را برای حجمهای دادهای که قبلاً غیرقابل مدیریت بودند، امکانپذیر میکند.
توابع پنجرهای و تجمیعهای مجموعه مرتبشده
توابع پنجرهای قابلیتهای تجمیعی را گسترش میدهند و با انجام محاسبات روی مجموعههای ردیف مرتبط با ردیف فعلی بدون فشردهسازی مجموعه نتایج، امکان تحلیلهای پیچیده مانند مجموعهای در حال اجرا، محاسبات صدک و تحلیل تطبیقی را فراهم میکنند.
sql
SELECT employee_id,
salary,
AVG(salary) OVER (PARTITION BY department) AS dept_avg,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY salary) OVER (PARTITION BY department) AS median_salary
FROM employees;
توابع مجموعه مرتبشده مانند PERCENTILE_CONT() معیارهای آماری را در پارتیشنهای مرتبشده محاسبه میکنند و بینشهایی در مورد توزیع داده ارائه میدهند که میانگینهای ساده نمیتوانند نشان دهند. این توابع بهویژه برای تحلیل جبران خسارت، معیارسازی عملکرد و کنترل کیفیت آماری ارزشمند هستند.
تجمیع چندبعدی با CUBE و ROLLUP
CUBE، ROLLUP و GROUPING SETS امکان خلاصهسازی چندسطحی را در پرسوجوهای واحد فراهم میکنند و نیاز به چندین تجمیع جداگانه یا عملیات پیچیده UNION را حذف میکنند. CUBE تمام ترکیبهای گروهبندی ممکن را تولید میکند، در حالی که ROLLUP زیرجمعهای سلسلهمراتبی را تولید میکند.
sql
SELECT region,
product_category,
quarter,
SUM(revenue) AS total_revenue
FROM sales
GROUP BY CUBE(region, product_category, quarter);
این پرسوجو مجموع درآمد را برای هر ترکیب از منطقه، دسته محصول و سهماهه، شامل مجموعهای کلی و زیرجمعهای جزئی تولید میکند. تابع GROUPING_ID() به شناسایی ستونهایی که به هر سطح تجمیع کمک میکنند، کمک میکند و تفسیر مناسب نتایج را در برنامههای گزارشگیری امکانپذیر میکند.
بهترین شیوهها برای تجمیع SQL کارآمد چیست؟
بهینهسازی عملکرد تجمیع SQL نیازمند درک معماری پایگاه داده و الگوهای اجرای پرسوجو است. محیطهای تولیدی نیازمند استراتژیهایی هستند که مصرف منابع را به حداقل برسانند و در عین حال توان عملیاتی و قابلیت اطمینان را به حداکثر برسانند.
نمایشهای مادیشده و استراتژیهای پیشتجمیع
نمایشهای مادیشده نتایج تجمیع را از قبل محاسبه میکنند و فضای ذخیرهسازی را با عملکرد پرسوجو معامله میکنند. این رویکرد بهویژه برای پرسوجوهای تحلیلی تکراری که هزینه محاسباتی از هزینه ذخیرهسازی بیشتر است، مؤثر است. بهترین شیوهها شامل پیادهسازی استراتژیهای تازهسازی افزایشی و طراحیهای آگاه از پارتیشنبندی برای سیستمهای توزیعشده است.
sql
CREATE MATERIALIZED VIEW monthly_sales_summary AS
SELECT DATE_TRUNC(‘month’, sale_date) AS month,
region,
SUM(amount) AS total_sales,
COUNT(*) AS transaction_count
FROM sales
GROUP BY DATE_TRUNC(‘month’, sale_date), region;
مکانیزمهای تازهسازی افزایشی نمایشهای مادیشده را فقط با دادههای تغییر کرده بهروزرسانی میکنند و سربار محاسباتی را با پردازش دلتاها به جای مجموعههای داده کامل کاهش میدهند. این رویکرد میتواند بهبودهای عملکردی بیش از ۱۰ برابر برای پرسوجوهای تحلیلی پرتکرار به دست آورد.
بهینهسازی شاخص برای پرسوجوهای تجمیعی
طراحی استراتژیک شاخص بهطور قابلتوجهی بر عملکرد تجمیع، بهویژه برای عملیات GROUP BY تأثیر میگذارد. شاخصهای مرکب که شامل هر دو ستون گروهبندی و ستونهای تجمیعی هستند، اسکنهای شاخص پوششی را امکانپذیر میکنند که کاملاً از جستجوی جدول جلوگیری میکنند. ایجاد شاخصهایی که با الگوهای تجمیعی رایج همراستا هستند، زمان اجرای پرسوجو و مصرف منابع را کاهش میدهد. برای دادههای سری زمانی، تکنیکهای شاخصگذاری تخصصی مانند شاخصهای BRIN میتوانند گروهبندی مبتنی بر زمان را با بهرهگیری از هممکانی فیزیکی دادهها تسریع کنند.
مدیریت حافظه و پردازش موازی
موتورهای پایگاه داده مدرن مدیریت حافظه پیچیدهای را برای عملیات تجمیعی پیادهسازی میکنند، اما درک این مکانیزمها به بهینهسازی طراحی پرسوجو کمک میکند. تجمیع مبتنی بر هش به حافظه متناسب با تعداد گروههای متمایز نیاز دارد، در حالی که تجمیع مبتنی بر مرتبسازی استفاده از حافظه قابل پیشبینیتری را با هزینههای ورودی/خروجی (I/O) بالقوه بالاتر ارائه میدهد. پیکربندی تنظیمات حافظه کاری مناسب و درک زمانی که پایگاههای داده بین الگوریتمهای تجمیع جابهجا میشوند، عملکرد قابل پیشبینی را در حجمهای داده و کاردینالیتیهای گروهی مختلف امکانپذیر میکند.
جمعبندی
توابع تجمیعی SQL برای تحلیل دادهها و تبدیل اطلاعات خام به بینشهای کسبوکاری عملی ضروری هستند. با درک نحوه عملکرد این توابع در کنار تکنیکهای پیشرفته مانند تجمیع تقریبی، توابع پنجرهای و تحلیل چندبعدی، میتوانید راهحلهای تحلیلی پیچیدهای را پیادهسازی کنید که با رشد سازمانی مقیاسپذیر هستند. محیطهای داده مدرن نیازمند دانش بنیادی از توابع تجمیعی پایه و آگاهی از استراتژیهای بهینهسازی عملکرد هستند. نمایشهای مادیشده، شاخصگذاری استراتژیک و تکنیکهای پردازش موازی، تجمیع کارآمد را در مجموعههای داده عظیم امکانپذیر میکنند، در حالی که ابزارهایی مانند Airbyte جریانهای کاری ادغام داده را که این فرآیندهای تحلیلی را تغذیه میکنند، ساده میکنند. ترکیب تکنیکهای تجمیعی SQL مناسب با پلتفرمهای ادغام داده قوی، پایهای برای تصمیمگیری دادهمحور ایجاد میکند که میتواند با نیازهای کسبوکاری در حال تحول سازگار شود. چه در حال محاسبه معیارهای مشتری، تحلیل عملکرد عملیاتی یا ساخت داشبوردهای مدیریتی باشید، تسلط بر این مفاهیم قابلیتهای تحلیلی شما را تسریع میکند در حالی که مقیاسپذیری و قابلیت نگهداری را تضمین میکند.
سوالات متداول
تفاوت بین توابع تجمیعی و تحلیلی در SQL چیست؟
توابع تجمیعی (مانند COUNT، SUM، AVG) یک نتیجه واحد برای هر گروه از ردیفها بازمیگردانند و چندین رکورد را به یک مقدار خلاصه فشرده میکنند. از سوی دیگر، توابع تحلیلی (یا پنجرهای) برای هر ردیف نتایجی را بازمیگردانند، در حالی که همچنان امکان دسترسی به محاسبات در سطح گروه، مانند مجموعهای در حال اجرا یا مقادیر رتبه را فراهم میکنند.
آیا توابع تجمیعی مقادیر NULL را نادیده میگیرند؟
بله، همه توابع تجمیعی به جز COUNT(*) مقادیر NULL را نادیده میگیرند. به عنوان مثال، AVG(column) میانگین را فقط برای مقادیر غیر NULL محاسبه میکند، که اگر بسیاری از رکوردها دادههای گمشده داشته باشند، میتواند بر دقت تأثیر بگذارد.
آیا میتوانم چندین تابع تجمیعی را در یک پرسوجوی SQL استفاده کنم؟
قطعاً. میتوانید چندین تابع تجمیعی را در یک دستور SELECT اعمال کنید. به عنوان مثال، ممکن است از SUM(sales)، AVG(sales) و COUNT(*) با هم برای محاسبه درآمد کل، میانگین ارزش سفارش و تعداد تراکنشها استفاده کنید.
نقش GROUP BY در تجمیع SQL چیست؟
GROUP BY تعریف میکند که ردیفها قبل از اعمال توابع تجمیعی چگونه گروهبندی شوند. بدون آن، توابع تجمیعی به کل مجموعه داده اعمال میشوند. با آن، توابع تجمیعی بهطور جداگانه برای هر ترکیب منحصربهفرد از ستونهای گروهبندیشده محاسبه میشوند.

