دستور Count در SQL – از کاربرد تا نحوه استفاده به زبان ساده
- یاد میگیرید چگونه از تابع COUNT برای شمارش دادهها استفاده کنید.
- خواهید آموخت چطور COUNT را با کلیدواژههایی مانند WHERE و GROUP BY ترکیب کنید.
- میآموزید کاربرد COUNT(DISTINCT) و تفاوت آن با COUNT(*) چیست.
- میتوانید با مثالهای واقعی، کاربرد عملی COUNT را در کوئریها ببینید.
- میدانید چطور با زیرکوئری، شمارش شرطی و پیشرفته را انجام دهید.
- با مسیر یادگیری حرفهای SQL و منابع آموزشی کاربردی آن آشنا میشوید.

دستور Count در SQL چیست؟
دستور Count در SQL یکی از توابع تجمعی است که برای شمار دادههای درون جداول پایگاههای داده رابطهای کار میکند. با کمک این دستور میتوان دادهها را به صورت تکراری و غیر تکراری، با توجه به شرایط خاص، برای انجام عملیات و غیره شمارش کرد. در ادامه مطلب مهمترین کاربردها و انواع کوئریهای قابل پیادهسازی با این دستور را ارائه دادهایم.
اما قبل از پریدن به درون مثالهای مربوط به دنیای واقعی درباره استفاده از دستور Count، باید به سینتکس پایه استفاده از این دستور نگاهی داشته باشیم.
سینتکس دستور Count
برای آشنا شدن با دستور Count در SQL قبل از همه باید سادهترین شکل پیادهسازی و استفاده از این کد را بیاموزیم. در پایین سینتکس پایه مربوط به تابع Count را نمایش دادهایم.
یادگیری پیشرفته SQL با فرادرس

فرادرس به عنوان بزرگترین تولیدکننده محتوی آموزشی فارسی، تلاش کرده که همه زبانهای برنامهنویسی و تکنولوژیها مربوط به مدیریت پایگاههای داده را نیز پوشش دهد. به همین جهت فیلمهای آموزشی بسیار مناسبی را برای آموزش SQL Server تهیه کرده است. SQL Server یکی از پایگاههای داده بسیار مشهور و قدرتمندی است که به طور کامل از زبان SQL استفاده میکند. آموزش این پایگاه داده به معنی یادگیری حرفهای زبان SQL است. با مشاهده منظم این فیلمها و تمرین هر روزه میتوانید، بر روی کار با پایگاههای دادهای که با زبان SQL کار میکنند، به طور بسیار خوبی مسلط شوید. در ادامه چند مورد از این فیلمهای آموزشی را در سطوح علمی مختلف قرار دادهایم.
- فیلم آموزش اس کیو ال سرور سطح مقدماتی با فرادرس
- فیلم آموزش SQL Server سطح تکمیلی با فرادرس
- فیلم آموزش اس کیو ال سرور سطح پیشرفته با فرادرس
- فیلم آموزش رایگان پروژه محور اس کیو ال سرور درباره ایجاد ویو سفارش فروشگاهی با فرادرس
- فیلم آموزش استفاده از «جیسون» (JSON) در SQL با فرادرس
مثالی برای استفاده از دستور Count
در این قسمت از مطلب به بررسی عمیقتر دستور COUNT()و روشهای بسیار متنوعی که برای استفاده از این تابع وجود دارد پرداخته و از مثالهای مربوط به کاربردهای این توابع در دنیای واقعی استفاده کردهایم.
مثال
برای نمایش بصری این دستورات، فرض کنیم که در شرکت مخصوصی برای فروش خودرو و موتور سیکلت کار میکنیم. به همین ترتیب، جدولی پر از دادههای مربوط به محصولات شرکت به شکل زیر در دسترس مدیر پایگاه داده قرار دارد. نام این جدول products است.

در این جدول پنج ستون اصلی با جزئیات پایین قرار دارند.
- product_code : کد یکتایی که برای شناسایی محصولات به صورت جداگانه بهکار برده میشود.
- product_name : در این ستون نام خودرو یا موتورسیکلت قرار داده میشود.
- product_line : این ستون دستهبندی را نگهداری میکند که موتورسیکلت یا خودرو بودن محصول را مشخص میکند.
- product_vendor : کدی که نشاندهنده خوردهفروش مربوط به هر کدام از محصولات است.
- buy_price : قیمتی که فروشنده برای محصول در نظر میگیرد.
چند مدل کوئری ساده
بر اثر اجرای کوئری بالا بر روی جدول، خروجی زیر به کاربر نمایش داده میشود.
با اجرای این کد، بازهم در خروجی عدد 5 را خواهیم دید.
در کوئری بالا به عنوان آرگومان تابع از نماد ستاره * استفاده کردیم. این نماد به صورت بسیار سادهای به SQL میگوید که همه ردیفهای درون جدول را بشمار.

فرض کنیم الان میخواهیم همه خطوط تولید موجود در جدول را بشماریم. بر اساس چیزی که تا به حال آموختهایم، احتمالا کوئری خود را به شکل زیر خواهیم نوشت.
خوب خروجی این کد هم برابر با عدد 5 خواهد بود. به این دلیل که SQL به ازای هر ردیف در جدول یکبار مقدار موجود در ستون product_line را شمارش کرده است. مهم است که به یاد داشته باشیم، تابعCOUNT()به صورت پیشفرض تکراری بودن موارد را در نظر نمیگیرد. برای نمونه، جدول محصولات productsفقط دو مقدار متفاوت Motorcycles و Classic Cars را در ستون product_line دارد، اما کوئری که نوشتهایم مقدار 5 را به خروجی برگردانده است. اگر بخواهیم که فقط مقادیر یکتا موجود در جدول را بشمریم، لازم است که از کلمه کلیدی DISTINCT در تابع COUNT() خود استفاده کنیم.
این بار با اجرای کد بالا عدد 2 در خروجی ظاهر میشود.
در کوئری بالا، از آنجا که به صورت صریح از کلمه کلیدی DISTINCTدر بخش آرگومان تابع COUNT() استفاده کردهایم، SQL متوجه شده و فقط مقادیر یکتای موجود در ستون product_line را شمرده و در خروجی نمایش میدهد.
همچنین میتوانیم از شرایط مختلفی در بند WHERE کوئری خود استفاده کنیم تا SQL فقط ردیفهای مشخصی را بشمارد. برای مثال، فرض کنیم باید تعداد محصولاتی را تعیین کنیم که فقط در خط تولید مربوط به موتورسیکلت تولید شدهاند. برای انجام این کار میتوانیم از کوئری پایین استفاده کنیم.
خروجی حاصل از کوئری بالا به صورت عدد 3 به کاربر نمایش داده میشود.
بر اثر اجرای کوئری بالا، در ابتدا SQL همه ردیفهایی را که مقدار متناظر آنها در ستون product_line برابر با Motorcycles است، فیلتر میکند. سپس کد محصولات فیلتر شده را میشمرد.
یکی از موارد مهمی که باید خاطرنشان شویم، این است که تابع Count در SQL، مقادیر «NULL» را در زمان شمردن در نظر نمیگیرد. در جدول products، مقدار product_vendor برای کد S10_4757 در ستون product_code برابر با «NULL» است. در نتیجه کوئری زیر بهجای مقدار 5 ، عدد 4 را برمیگرداند.
خروجی کوئری بالا برابر با مقدار زیر است.
در کوئری بالا با اینکه مقادیر HLD و CMC و HMD و RSD شامل شمارش تابع COUNT() شدهاند اما مقدار NULL استثنا شده است.

انواع کاربردهای پیشرفته دستور Count در SQL
دستور Count در SQL برای شمردن تعداد رکوردها در شرایط مختلف و با توجه به دادههای مختلف برنامه بهکار برد میشود. میدانیم که این دستور یکی از دستورات تجمعی است. در این قسمت، انواع کوئریهایی که میتوان در آنها از دستور Count استفاده کرد را همراه با شرایط و مثالهای مختلف بررسی کردهایم.
دستور Count در SQL در کنار بند GROUP BY
دستور GROUP BY در SQL برای کمک به محاسبه اندازهگیریهای تجمعی به دستهبندی دادهها در گروههای مختلفی کمک میکند. از بعضی توابع تجمعی در دسترس در SQL، میتوان به COUNT() و SUM() و AVG() و MIN() و MAX() اشاره کرد.
در پایین مثالهایی از تجمیع دادهها بر اساس معیارهای مختلف را ارائه دادهایم.
- دستهبندی مشتریها بر اساس نیازهای خاص یا رفتار آنها
- دستهبندی محصولات به انواع مختلف
- دستهبندی مردم مختلف بر اساس میزان درآمد آنها
همه دستهبندیهای بالا، نمونههایی از تجمیع دادهها هستند. این تجمیع دادهها را با کمک توابع تجمعی انجام میدهند.
برای کمک به درک بهتر مطلب بالا در ادامه، مثالی را از تابع COUNT() نمایش دادهایم. فرض کنیم که میخواهیم تعداد محصولات موجود را در هر خط تولید محاسبه کنیم.
برای این کار از کوئری پایین استفاده میکنیم.
خروجی این کوئری به صورت جدول زیر نمایش داده میشود.
| product_line | COUNT(product_code) |
|---|---|
| Motorcycles | 3 |
| Classic Cars | 2 |
در کوئری بالا، SQL در ابتدا همه مقادیر یکتای موجود در ستون product_line را به عنوان ستون اول بدست میآورد. سپس برای هر کدام از مقادیر یکتای پیدا شده، تعداد محصولات موجود در ستونproduct_code را میشمارد. به عبارت کوتاهتر، SQL همه ردیفها را بر اساس خط تولید محصول تجمیع میکند و پس از آن از تابع تجمعی - در این کوئری COUNT() - برای محاسبه تعداد محصولات هر خط تولید استفاده کرده است.
بسیار مهم است که همه ستونهای مشخص شده در دستور SELECT را در بند GROUP BY کوئری هم نام بریم. البته این قائده شامل توابع تجمعی نمیشود. در غیر این صورت، SQL پیغام خطایی را به خارج برمیگرداند.

تا اینجای کار، در همه مثالهایی که در این مطلب نمایش دادهایم، از تابع COUNT() در بخش SELECT کوئری استفاده کردهایم. اگرچه، تابع COUNT()، تابعی همه کاره است و میتوانیم آن را به روشهای متنوعی در بخشهای مختلفی از کوئری بهکار ببریم. در ادامه مطلب به روشهای مختلف استفاده از تابع COUNT()در سایر بخشهای کوئری نیز نگاهی خواهیم داشت.
دستور Count در بند HAVING به صورت شرطی
به عنوان مثال، تصور کنید در روی مجموعه دادهی موجود فقط به دنبال آن خط تولیدهایی هستیم که در آنها بیشتر از دو محصول تولید میشود.
کوئری مورد نظر برای این درخواست به شکل زیر خواهد بود.
خروجی کوئری بالا به صورت زیر خواهد بود.
| product_line | COUNT(product_code) |
|---|---|
| Motorcycles | 3 |
این کوئری هم شبیه به کوئری قبلی کار میکند. یعنی در این مورد هم SQL ردیفها را بر اساس مقدار یکتای دادههای درون ستون product_line دستهبندی میکند. سپس با استفاده از تابع COUNT()تعداد محصولات متعلق به هر خط تولید را برمیگرداند. اگرچه، از آنجا که تصمیم گرفتهایم که دادههای مربوط به خطوط تولیدی را نگهداری کنیم که بیش از دو محصول دارند، دادههای خط تولید مربوط به خودروهای کلاسیک را - که فقط دارای دو محصول است – در نتایج نهایی نداریم.
دستور Count در SQL همراه با بند ORDER BY
کوئری مربوط به سناریو گفته شده در بالا به صورت زیر پیادهسازی میشود.
بر اثر اجرای کوئری بالا بر روی جدول ابتدای مطلب، جدول زیر به عنوان جواب به خروجی برگشت داده میشود.
| product_line | COUNT(product_code) |
|---|---|
| Classic Cars | 2 |
| Motorcycles | 3 |
در کوئری بالا، SQL خطوط تولید یکتا را به عنوان گروهها و تعداد محصول تولید شده در هر گروه را به عنوان شماره مورد نظر برای مرتبسازی در نظر گرفته و در خروجی برمیگرداند. اگرچه به دلیل بند ORDER BY نتایج مرتب شده بر اثر تابع COUNT() به صورت صعودی مرتب شدهاند.
استفاده از دستور Count در SQL در بند WHERE همراه با شرط
خروجی حاصل از اجرای کوئری بالا به صورت زیر به کاربر نمایش داده میشود.
همچنین این کار را فقط با کمک بندهای GROUP BY و HAVING نیز نمیتوانیم به طور مستقیم انجام دهیم. زیرا این دستورات فقط ردیفهای دستهبندی شده را در خروجی نمایش میدهند نه همه جزئیات مربوط به همه محصولاتی را که نیاز داریم.

در عوض، میتوانیم از چیز دیگری به نام زیرکوئری استفاده کنیم. زیرکوئری به کوئری میگویند که درون کوئری اصلی قرار دارد. در نتیجه کوئری نهایی به شکل زیر نوشته خواهد شد.
بر اثر اجرای کوئری بالا جدول زیر در خروجی به کاربران نمایش داده میشود.

انواع پایگاه داده از آشنایی ابتدایی تا تسلط
پایگاههای داده انواع بسیار گوناگونی دارند. شرکتها یا تیمهای نرمافزاری مختلف بنابر نیاز خود پایگاه داده خاصی را ابداع کردهاند. اما همه این پایگاههای داده با اقبال بین برنامه نویسان و مدیران پایگاه داده روبهرو نشدند. در عوض بعضی از این پایگاههای داده هم با توجه به کاربرد اختصاصی خود شهرت جهانی پیدا کردند. بعضی از آنها برای کار بر روی نرمافزارهای دسکتاپی یا نرمافزارهایی با حجم دادههای کم عالی هستند و بعضی دیگر برای کار با سیستمهای بسیار پیچیدهای طراحی شدهاند که سرورهای آنها از لحاظ فیزیکی در مناطق مختلف جغرافیایی قرار گرفتهاند.

فرادرس تلاش کرده تا بهترین آموزشها را از لحاظ کیفیت، مختصر گویی و جامعیت علمی تهیه کند. پس در زمینه پایگاه داده هم دست به تولید فیلمهای مختلفی برای هر کدام از پایگاههای داده محبوب و کاربردی دنیا زده است. فیلمهای آموزشی فرادرس از سطوح ابتدایی تا سطوح پیشرفته حتی اجرای پروژههای در حد دنیای واقعی را پوشش دادهاند. در این قسمت از مطلب، به معرفی چند فیلم مختلف درباره چند پایگاه داده گوناگون پرداختهایم. برای اینکه فیلمهای بیشتری درباره این پایگاههای داده ببینید یا با پایگاههای داده بیشتری آشنا شوید میتوانید بر روی تصویر بالا کلیک کرده تا به صفحه اصلی این مجموعه آموزشی هدایت شوید.
- فیلم آموزش پایگاه داده MySQL با فرادرس
- فیلم آموزش مدیریت بانک اطلاعاتی با Oracle، سطح مقدماتی در فرادرس
- فیلم آموزش رایگان پایگاه داده «کلیک هاوس» (ClickHouse) مربوط به مبانی و مقدمات با فرادرس
- فیلم آموزش SQL Server، دوره تکمیلی با فرادرس
- فیلم آموزش پایگاه داده اس کیو لایت SQLite در پایتون با فرادرس
جمع بندی
تا الان، با مطالعه این مطلب، به درک شایستهای از روش استفاده تابع COUNT() رسیدهایم. به محض شروع به استفاده از تابع COUNT() در کوئریهای خود، بازهم به دانش بیشتری از این تابع دست خواهیم یافت. تابع COUNT() برای شمارش ردیفها در SQL به کار برده میشود. میتوانیم به این تابع بگوییم که ردیفهای تکراری را نشمارد یا فقط ردیفهایی با شرایط خاص را بشمارد. میتوانیم کوئریها را به صورتی درون هم بنویسیم که شرایط خاصی بعد از شمارش ردیفهای خاصی اجرا شوند. به طور کل توابع تجمعی مخصوصا تابع COUNT() کاربردی بسیار گستردهتر از چیزی دارند که در ابتدا از ظاهر آنها تشخیص داده میشود.
در این مطلب از مجله فرادرس درباره دستور Count در SQL مطالعه کردیم. این دستور یکی از توابع تجمعی است که برای شمارش دادهها و برگرداندن عددی به صورت مجزا به کاربرده میشود. بالای مطلب با تابع COUNT() آشنا شده و سپس کاربردهای مختلف این دستور را با نمایش سینتکس ابتدایی آن بررسی کردیم. در ادامه، از سادهترین کوئریهای ممکن تا کوئریهای پیچیده قابل ارائه با کمک تابع COUNT() را نمایش دادیم و در نهایت فیلمهای آموزشی مربوط به انواع پایگاههای دادهای که با زبان SQL کار میکنند را معرفی کردیم.
مطالب مجله فرادرس را در جستجوی گوگل سریعتر ببینید













