Subquery یا زیرکوئری یکی از مهمترین ابزارهای تحلیل و فیلتر دادهها در SQL Server است. زمانی که نیاز داریم نتیجه یک کوئری را به عنوان ورودی برای کوئری دیگری استفاده کنیم، Subquery به ما امکان میدهد بدون ساخت جدول موقت، منطق تحلیلی را درون یک ساختار تو در تو پیادهسازی کنیم.
زیرکوئریها پایه بسیاری از کوئریهای پیشرفته هستند و در تحلیل داده، گزارشگیری و فیلترهای چندمرحلهای استفاده فراوانی دارند.
Subquery چیست؟
Subquery یک کوئری کامل است که درون یک کوئری دیگر قرار میگیرد.
نتیجه Subquery میتواند یک مقدار، یک لیست از مقادیر یا حتی یک مجموعه کامل از ردیفها باشد. این نتیجه سپس توسط کوئری اصلی پردازش میشود.
زیرکوئریها معمولاً در بخشهای زیر استفاده میشوند:
- بخش SELECT برای محاسبات وابسته
- بخش WHERE برای فیلتر کردن دادهها
- بخش HAVING جهت اعمال شرط روی گروهها
- بخش FROM جهت ساخت جدولهای موقت (Derived Table)
به دلیل همین انعطاف بالا، Subquery یکی از ابزارهای کلیدی برای ساخت کوئریهای پیچیده در SQL Server محسوب میشود.
انواع Subquery در SQL Server
1. Subquery تکیمقداری
این نوع Subquery فقط یک مقدار برمیگرداند.
در شرایط مقایسهای مانند =، >، < و … به کار میرود.
کاربرد اصلی آن زمانی است که نیاز دارید مقدار یک محاسبه یا نتیجه را با دادههای جدول اصلی مقایسه کنید.
مثلاً پیدا کردن کارمندانی که حقوق آنها بالاتر از میانگین حقوق باشد.
2. Subquery چندمقداری
این نوع Subquery چندین مقدار برمیگرداند و برای استفاده از آن معمولاً از عملگرهای زیر استفاده میشود:
- IN
- ANY
- ALL
در این ساختار، Subquery یک مجموعه از مقادیر را تولید میکند و پرسوجوی اصلی بررسی میکند که آیا مقدار مورد نظر در آن مجموعه وجود دارد یا خیر.
3. Subquery همبسته (Correlated Subquery)
در این نوع Subquery، زیرکوئری به هر ردیف کوئری اصلی وابسته است و برای هر ردیف مجدداً اجرا میشود.
این نوع زیرکوئری زمانی کاربرد دارد که بخواهید رابطه بین رکوردهای درون یک جدول را تحلیل کنید.
مثال کاربردی:
محاسبه سفارشهایی که مبلغ آنها در مقایسه با دیگر سفارشهای همان مشتری بالاتر است.
4. Subquery در بخش FROM (جدول مشتقشده)
گاهی لازم است مجموعهای از دادههای پردازششده را قبل از تحلیل نهایی آماده کنید.
در این حالت Subquery داخل بخش FROM قرار میگیرد و مانند یک جدول مجازی عمل میکند.
این روش برای تحلیلهای چندمرحلهای و خوانایی بیشتر کوئریها بسیار کارآمد است.
کاربرد Subquery در کوئریهای پیشرفته SQL Server
Subquery در ترکیب با ابزارهای دیگر، پایه ایجاد کوئریهای پیشرفتهتر SQL است. برخی از نمونهها عبارتاند از:
- ساخت گزارشهای سلسلهمراتبی
- تحلیل فروش بر اساس میانگین یا بیشترین مقدار
- محاسبات آماری چندمرحلهای
- آمادهسازی دادهها قبل از JOIN
- استفاده در فیلترهای پیچیده در بخش WHERE
در کوئریهای پیشرفته، Subquery معمولاً همراه با تکنیکهایی مانند CTE، Window Function و OUTER APPLY به کار میرود.
مزایا و معایب Subquery
مزایا
- سادهسازی منطق کوئریهای پیچیده
- امکان فیلتر چندمرحلهای در یک ساختار خوانا
- حذف نیاز به ساخت جدول موقت
- مناسب برای تحلیلهای وابسته به دادههای محاسبهشده
معایب
- در Subqueryهای همبسته، امکان کاهش سرعت وجود دارد
- در برخی موارد جایگزینی با JOIN، کارایی بهتری دارد
- استفاده زیاد از Subqueryهای تو در تو میتواند خوانایی کوئری را کاهش دهد
به همین دلیل انتخاب بین JOIN، CTE و Subquery باید بر اساس هدف تحلیل و کارایی انجام شود.
نقش Subquery در تحلیل داده و تصمیمگیری
Subquery ابزار اصلی برای ایجاد مدلهای تحلیلی چندمرحلهای در SQL Server است.
در بسیاری از تحلیلهای سازمانی مانند:
- یافتن مشتریان ارزشمند
- شناسایی محصولات با فروش بالاتر از میانگین
- محاسبه رشد دورهای
- تحلیل رفتار خرید
زیرکوئری نقش کلیدی دارد.
در مجموع، Subquery یکی از ستونهای اصلی تحلیل داده در SQL Server است و تسلط بر آن برای هر تحلیلگر یا توسعهدهنده SQL ضروری است.
کلیدواژه ها : Subquery در SQL Server - SQL Server Subquery - زیرکوئری در SQL Server - انواع Subquery - Advanced Query در SQL Server - SQL Server Advanced Query - کوئریهای پیشرفته SQL Server - Derived Table SQL Server - Correlated Subquery SQL Server - تحلیل داده در SQL Server - SQL Server Data Analysis - بهینهسازی کوئری SQL Server - Query Optimization SQL Server - مدیریت داده در SQL Server - Data Management SQL Server - Data Filtering SQL Server