دستور COUNT در SQL Server همراه با مثال های کاربردی و آشنایی با محدودیت ها

دستور COUNT در SQL Server همراه با مثال های کاربردی و آشنایی با محدودیت ها

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۰۶ خرداد ۱۴۰۳
آخرین بروزرسانی: ۲۷ خرداد ۱۴۰۳
زمان مطالعه: 9 دقیقه
۵
(۴)

دستور COUNT در SQL Server یکی از پرکاربردترین دستورات SQL است. یکی از مزایای استفاده از برنامه‌های مدیریت دیتابیس رابطه‌ای، امکان استفاده از توابع و دستورات مختلف است. در برنامه SQL Server دستوری برای شمارش تعداد سطرهای جداول وجود دارد. با اجرای این دستور، تعداد سطرها به‌صورت یک عدد صحیح برگردانده می‌شود. در این مطلب، با نحوه استفاده از دستور COUNT و همچنین با شرایط و محدودیت‌های استفاده از آن در قالب مثال‌های عملی، آشنا خواهیم شد.

دوره کوئری نویسی در SQL Server نیک آموز

دستور COUNT در SQL Server چیست؟

دستور COUNT درواقع نوعی از تابع Aggregate است. در SQL Server نوعی از توابع به نام Aggregate وجود دارند که از آن‌ها برای انجام محاسبات استفاده می‌شود. تابع Aggregate برروی مجموعه‌ای از مقادیر اجرا شده و یک مقدار واحد را برمی‌گرداند. ازجمله مهم‌ترین توابع Aggregate در SQL Server، می‌توان به توابع AVG (برای محاسبه میانگین)، تابع MAX (برای محاسبه ماکزیمم)، تابع MIN (برای محاسبه می‌نیمم)، تابع SUM (برای محاسبه جمع) و درنهایت، تابع COUNT که موضوع موردبحث ما در این مطلب است، اشاره کرد. در مقاله تابع Aggregate در SQL Server ، این تابع را به‌طور کامل بررسی کرده‌ایم که برای آشنایی بیشتر، پیشنهاد می‌کنیم آن را مطالعه کنید.

دستور COUNT در SQL Server از سال ۲۰۰۸ به این پلتفرم اضافه شده است. همچنین در پلتفرم‌هایی مثل آژور مایکروسافت (Microsoft Azure که یک پلتفرم ابری برای مدیریت و میزبانی از دیتابیس است) و مایکروسافت فابریک (Microsoft Fabric که جزو ابزارهای هوش تجاری یا همان Business Intelligence است) هم از این دستور پشتیبانی می‌شود.

وظیفه دستور COUNT در SQL Server ، بازگرداندن تعداد آیتم‌های موجود در یک مجموعه است. این تابع، تنها یک پارامتر را قبول می‌کند که می‌تواند یک ستون یا یک شرط باشد. مقدار بازگشتی توسط دستور COUNT، یک عدد صحیح (از نوع INT) است. اگر هم این تعداد برابر صفر باشد، مقدار Null بازگردانده می‌شود.

دستور COUNT را به سه صورت، می‌توان نوشت:

  1. اگر دستور COUNT به‌صورت:

 

COUNT(*)

 

نوشته شود، تعداد تمام رکوردها (تعداد سطرهای جدول) بازگردانده می‌شود.

  1. اگر دستور COUNT به‌صورت:

 

COUNT(ALL expression)

 

نوشته شود، تعداد رکوردهایی که شرط نوشته‌شده را برآورده کنند و در عین حال، مقدار آن‌ها برابر Null نباشد، بازگردانده می‌شود.

  1. اگر دستور COUNT به‌صورت:

 

COUNT(DISTINCT expression)

 

نوشته شود، تعداد رکوردهایی که شرط نوشته‌شده را برآورده کنند و در عین حال، نه تکراری باشند و نه Null ، بازگردانده می‌شود.

تا اینجا با دستور COUNT در SQL Server و نحوه نوشتن آن آشنا شدیم. اما در چه مواقعی می‌توان از این دستور استفاده کرد و مهم‌ترین کاربردهای آن چیست؟

 

دستور COUNT در SQL Server چیست؟

 

کاربرد دستور COUNT در SQL Server

همانطور که گفتیم دستور COUNT یک وظیفه را برعهده دارد و آن هم چیزی نیست جز، شمارش! شمارش رکوردها، یک وظیفه باارزش و بسیار حیاتی است که به ما در مدیریت بهتر جداول رابطه‌ای کمک می‌کند. مهم‌ترین کاربردهای دستور COUNT در SQL Server شامل موارد زیر است:

  • اطمینان از یکپارچگی داده‌ها (Data Integrity)
  • بررسی کیفیت داده‌ها (Data Quality)
  • گزارش‌گیری (Reporting)

علاوه‌براین‌ها، این دستور می‌تواند هنگام استفاده از عبارتی مثل GROUP BY هم بسیار مفید باشد. مثلاً اگر دیتابیسی از فیلم‌های روی پرده یک سینما داشته باشیم، می‌توانیم با ترکیب GROUP BY و COUNT، تعداد مخاطبان هر فیلم را از جداول دیتابیس، استخراج کنیم. برای این که به‌صورت عملی و ملموس با کاربردهای دستور COUNT در SQL Server آشنا شویم، در ادامه، تعدادی مثال را باهم مرور می‌کنیم.

مثال های کاربردی برای استفاده از دستور COUNT در SQL Server

با بررسی مثال‌های پیش رو، عملکرد دستور COUNT در SQL Server را بهتر درک خواهیم کرد. برای پیاده‌سازی این مثال‌ها، جدولی حاوی مقادیر زیر را ایجاد کرده‌ایم:

 

مثال های کاربردی برای استفاده از دستور COUNT در SQL Server

 

در این جدول، که نام آن را «products» گذاشته‌ایم، ستون‌هایی به‌عنوان:

  • کد محصول (product_code)
  • نام محصول (product_name)
  • نوع محصول (product_line)
  • فروشنده (product_vendor)
  • قیمت محصول (buy_price)

وجود دارد. باهم مثال‌هایی از اعمال دستور COUNT روی این جدول را مشاهده می‌کنیم.

مثال اول: شمارش تعداد سطرهای جدول

اولین مثال از کاربرد دستور COUNT در SQL Server ، به ساده‌ترین کاربرد آن، یعنی شمارش تمام سطرهای یک جدول، اشاره دارد. برای این کار، کوئری زیر را پیاده‌سازی می‌کنیم:

 

SELECT COUNT(product_code)
FROM products;

 

همانطور که می‌بینید، کافی است تا دستور COUNT را روی یک ستون از جدول Products، اعمال کنیم. اجرای کوئری بالا، نتیجه زیر را به‌دنبال خواهد داشت:

 

شمارش تعداد سطرهای جدول

 

این نتیجه، تعداد تمامی سطرهای جدول Products را نشان می‌دهد. البته باید بدانید که ما این دستور را روی ستونی که همه سطرهای آن حاوی مقادیر غیر Null بود، اجرا کردیم.

اگر همین دستور را روی ستون «product_vendor» که حاوی یک مقدار Null است، اجرا کنیم:

 

SELECT COUNT(product_vendor)
FROM products;

 

نتیجه زیر نشان داده می‌شود:

 

شمارش تعداد سطرهای جدول با دستور COUNT در SQL Server

 

اما راهی برای شمارش تعداد سطرهای جدول بدون نیاز به مشخص‌کردن یک ستون به‌عنوان پارامتر دستور COUNT در SQL Server وجود دارد؟ بله! کافی است کوئری زیر را اجرا کنیم: 

 

SELECT COUNT(*)
FROM products;

 

اجرای این کوئری، عدد ۵ را به‌عنوان تعداد سطرهای جدول، برمی‌گرداند.

مثال دوم: شمارش رکوردهای غیرتکراری با استفاده از عبارت DISTINCT

دومین کاربرد دستور COUNT در SQL Server ، توانایی بازگرداندن تعداد سطرهای غیرتکراری است. همانطور که در جدول Products مشاهده می‌کنید، ستون product_line شامل مقادیر تکراری است. می‌توانیم با اضافه‌کردن عبارت DISTINCT قبل از نام ستون، تعداد سطرهای غیرتکراری آن ستون را به‌دست آوریم. این کار را با استفاده از کوئری زیر انجام می‌دهیم:

 

SELECT COUNT(DISTINCT product_line)
FROM products;

 

با اجرای کوئری بالا، نتیجه زیر به‌دست می‌آید:

 

شمارش رکوردهای غیر تکراری با استفاده از عبارت DISTINCT

 

همانطور که می‌بینید، عدد ۲ بازگردانده شد؛ چراکه تنها دو مورد غیرتکراری در ستون product_line وجود دارد. 

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

دستور COUNT در SQL Server را می‌توان با WHERE ترکیب کرده و یک شرط هم برای شمارش سطرها مشخص کرد. فرض کنیم که می‌خواهیم تعداد محصولاتی که در دسته «Motorcycles» است را به‌دست آوریم. برای این کار، کوئری زیر را می‌نویسیم:

 

SELECT COUNT(product_code)
FROM products
WHERE product_line = ‘Motorcycles’;

 

نتیجه اجرای کوئری بالا به‌صورت زیر است:

 

شمارش رکوردهایی که باید یک شرط خاص را برآورده کنند

 

همانطور که می‌بینید، عدد ۳ به‌عنوان نتیجه برگردانده شده است؛ چراکه تنها سه محصول از نوع Motorcycles در جدول Products وجود دارد. 

مثال چهار: شمارش رکوردهای موجود در یک گروه

یکی از جاهایی که دستور COUNT در SQL Server می‌تواند بسیار کاربردی باشد، هنگام استفاده از دستور GROUP BY است. جدول products را درنظر بگیرید. فرض کنید که می‌خواهیم بدانیم چه تعدادی از هرنوع محصول را در اختیار داریم. این کار را می‌توانیم با اجرای کوئری زیر انجام دهیم:

 

SELECT product_line,
     COUNT(product_code)
FROM products
GROUP BY product_line;

 

اجرای کوئری بالا، با نتیجه زیر همراه است:

 

ترکیب COUNT با دستور GROUP BY

 

در این کوئری، SQL Server ابتدا تمام مقادیر غیرتکراری موجود در ستون اول T یعنی product_line T را محاسبه می‌کند تا بدانیم چندنوع یا دسته محصول داریم. سپس، محصولات متعلق به هر دسته، شمرده می‌شوند.

مثال پنج: شرط گذاری به کمک دستور HAVING و ترکیب آن با دستور COUNT در SQL Server

دستور HAVING یک دستور کاربردی برای تعیین شرط در دستور GROUP BY است. بنابراین، بد نیست تا مثالی از کاربرد این دستور را هم درکنار دستور COUNT ببینیم. فرض کنید می‌خواهیم دسته‌هایی از محصولات را که بیش از دو محصول در آن دسته وجود دارد، شناسایی کنیم. برای این کار، کوئری زیر را می‌نویسیم:

 

SELECT product_line,
       COUNT(product_code)
FROM products
GROUP BY product_line
HAVING COUNT(product_code)>2;

 

نتیجه اجرای کوئری بالا، به‌صورت زیر است:

 

شرط گذاری به کمک دستور HAVING و ترکیب آن با دستور COUNT در SQL Server

 

این نتیجه، نوع Motorcycles و تعداد محصولاتی که از این نوع هستند را بازگردانده است.

مثال ششم: استفاده از دستور COUNT در SQL Server در کنار دستور ORDER BY

آخرین مثال خود را به استفاده از دستور COUNT درکنار دستور ORDER BY اختصاص می‌دهیم. از دستور ORDER BY برای مرتب‌کردن خروجی به‌صورت صعودی، استفاده می‌شود. 

فرض کنید که می‌‌‌‌‌‌‌خواهیم تعداد محصولات متعلق به هر دسته را مشخص کرده (یعنی چند محصول متعلق به دسته Motorcycles و چند محصول متعلق به دسته Classic Cars است) و سپس دسته‌‌ ها را براساس تعداد محصولات متعلق به آن‌ها مرتب کنیم. برای این کار، کوئری زیر را می‌‌‌‌نویسیم:

 

SELECT   product_line,
       COUNT(product_code)
FROM     products
ORDER BY COUNT(product_line);

 

نتیجه اجرای کوئری بالا، به‌صورت زیر است:

 

استفاده از دستور COUNT در SQL Server در کنار دستور ORDER BY

 

همانطور که می‌بینید، اول دسته Classic Cars و سپس دسته Motorcycles در خروجی آمده است (ترتیب صعودی). در جلوی هرکدام، تعداد محصولات متعلق به آن دسته نیز آورده شده است.

محدودیت های استفاده از دستور COUNT در SQL Server

اما استفاده از دستور COUNT ممکن است با محدودیت‌هایی نیز همراه باشد. جدولی که در مثال‌های قبل معرفی کردیم را درنظر بگیرید. فرض کنید بخواهیم جزئیات محصولاتی که جزو یک دسته‌بندی با بیش از سه محصول هستند را بازیابی کنیم. ممکن است با خود فکر کنید که می‌توان با استفاده از دستور COUNT در عبارت WHERE، شرط لازم برای بازیابی این داده‌ها را نوشت؛ چیزی شبیه کوئری زیر:

 

SELECT *
FROM products
WHERE COUNT(product_line)>=3;

 

همه‌چیز درست به‌نظر می‌رسد. اما با اجرای این کوئری، خطای زیر نمایش داده می‌شود:

 

محدودیت های استفاده از دستور COUNT در SQL Server 

 

به‌نظر شما علت چیست؟ علت این است که شما نمی‌توانید از دستور COUNT در SQL Server به‌طور مستقیم به‌عنوان شرط دستور WHERE استفاده کنید. استفاده از دستورات GROUP BY و HAVING نیز به‌تنهایی نمی‌تواند ما را به هدفمان برساند و تمامی جزئیات محصولات موردنظرمان را نشان دهد. درعوض، شما در باید در اینجا، از یک کوئری تو در تو استفاده کنید:

 

SELECT *
FROM products
WHERE product_line in (SELECT product_line
                   FROM products
               GROUP BY product_line
   HAVING COUNT(product_code)>=3);

 

خروجی کوئری بالا، به‌صورت زیر است:

 

محدودیت های استفاده از دستور COUNT در SQL Server

 

بنابراین این محدودیت استفاده از دستور COUNT را نیز درنظر بگیرید.

جمع بندی : آشنایی با دستور COUNT در SQL Server

در این مطلب، درباره دستور COUNT در SQL Server صحبت کردیم و گفتیم که وظیفه این دستور، شمارش تعداد سطرهای یک جدول است. با مثال‌های کاربردی، نحوه استفاده از این دستور را در کنار عباراتی مثل دستور GROUP BY، دستور ORDER BY و دستور HAVING، نشان دادیم. بهتر است برای درک بهتر این دستور و نحوه استفاده از آن، همین الان دست به کار شوید و مثال‌های گفته شده در این مطلب را پیاده‌سازی کنید؛ چراکه با درک نحوه عملکرد دستور COUNT ، می‌توانید از آن در کاربردهای مختلفی (شامل گزارش‌گیری، تحلیل داده و…) استفاده کنید. همچنین پیشنهاد می‌کنیم برای آشنایی بیشتر با سایر دستورات، مقاله جامع معرفی پرکاربردترین دستورات SQL Server را مطالعه نمایید.

چه رتبه ای می‌دهید؟

میانگین ۵ / ۵. از مجموع ۴

اولین نفر باش

title sign
دانلود مقاله
دستور COUNT در SQL Server همراه با مثال های کاربردی و آشنایی با محدودیت ها
فرمت PDF
12 صفحه
حجم 1 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
402 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
title sign
دیدگاه کاربران