نحوه کار با تابع MIN() در SQL Server

نحوه کار با تابع MIN() در SQL Server

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

‌مقدمه

در ابن مقاله، یک نمای کلی از تابع ()SQL MIN به همراه چندین مورد استفاده از آن را توضیح خواهم داد. این تابع در SQL Server تحت توابع Aggregate دسته‌بندی می‌شود. توابع مجموع (Aggregate) یک محاسبه را بر روی مجموعه‌ای از مقادیر یک عبارت مشخص انجام می‌دهند و یک مقدار واحد را در خروجی خود برمی‌گردانند. توابع Aggregate را هر بار اجرا کنید مقدار یکسانی را برمی‌گردانند مگر اینکه داده‌های منبع شما تغییر کند.

توابع دیگری نیز در T-SQL وجود دارد که در زیر مجموعه توابع Aggregate دسته‌بندی می‌شوند. لیست این توابع عبارت‌اند از:

  • AVG
  • COUNT
  • COUNT_BIG
  • MAX
  • MIN
  • SUM
  • VAR
  • STRING_AGG
  • GROUPING
  • GROUPING_ID
  • APPROX_COUNT_DISTINCT
  • CHECKSUM_AGG

همان‌طور که در بالا توضیح دادم، امروز می‌خواهیم در مورد دستور ()SQL MIN بیشتر بدانیم، بنابراین این مقاله فقط روی این تابع متمرکز خواهد شد.

آموزش SQL Server برای همه

تابع ()SQL MIN حداقل یا کمترین مقدار را از عبارت مشخص شده برمی‌گرداند. مقادیر NULL از ستون‌ها را نادیده می‌گیرد. موارد استفاده از آن را به شما نشان خواهم داد تا با کمک مثال‌های ارائه شده در این مقاله، آن را از جنبه‌های مختلف درک کنید. دستور این تابع SQL در زیر آورده شده است.

SELECT MIN (column)
FROM table

در ابتدای مقاله دو جدولی که برای تست ایجاد کرده‌ام را معرفی می‌کنم.

من دو جدول “Employee” و “Sales” دارم. جدول ” Employee ” تمام جزئیات مربوط به کارمندان را ذخیره می‌کند و جدول “Sales” جزئیات مربوط به فروش و فاکتور را ذخیره می‌کند. من از این دو جدول استفاده خواهم کرد. اگر جدولی برای آزمایش این موارد استفاده ندارید، می‌توانید آن‌ها را با مجموعه‌ای از مقادیر ایجاد کنید. پرس‌وجوهای ارائه شده در این مقاله خروجی را مطابق داده‌های ذخیره شده در این جداول برمی‌گرداند.

در این موارد از دستور SQL MIN استفاده کنید

در این بخش موارد استفاده از دستور MIN، از کاربرد اصلی آن تا استفاده از GROUP BY، ORDER BY، HAVING یا سایر بندها را شرح داده می‌شود. شما می‌توانید از همه این موارد بر اساس نیاز خود استفاده کنید.

ساده‌ترین راه استفاده

بیایید با استفاده ساده از آن شروع کنیم که در آن حداقل یا کمترین قیمت فاکتور پردازش شده در یک ماه خاص را بازیابی می‌کنم. در این مثال استفاده از تابع MIN را با استفاده از دستور SELECT به شما نشان می‌دهم.

فرض کنید می‌خواهید حداقل یا کمترین مبلغ فاکتور پردازش شده در جولای ۲۰۲۱ یا هر ماه خاصی را بدانید. ستون Price هزینه هر فاکتور را در خود ذخیره می‌کند.

SELECT MIN (price) AS [Lowest Invoice]
FROM Sales
WHERE InvoiceMonth = ‘July’
GO

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

در مثال بالا را فرض می‌کنیم که کمترین فاکتور را از یک ماه ژوئیه بازیابی کرده‌ایم. حال، بیایید در نظر بگیریم که نیاز دیگری وجود دارد که در آن باید کمترین هزینه فاکتور را از یک سه‌ماهه خاص یا چند ماه خاص دریافت کنیم. می‌توانیم از دستور SQL IN با عبارت WHERE برای فهرست کردن تمام ماه‌هایی که باید کمترین مقدار را محاسبه کنیم، استفاده کنیم.

بیایید این الزام را در مثال خود بگنجانیم. من می‌خواهم کمترین فاکتور را از ماه‌های ژوئن و جولای دریافت کنم، بنابراین از پرس‌وجوی SQL بالا با چند تغییر استفاده کردم تا با کمک عبارت SQL IN همان‌طور که در عبارات زیر نشان‌داده‌شده است، هر دو ماه را شامل شود.

SELECT MIN (price) AS [Lowest Invoice]
FROM Sales
WHERE InvoiceMonth IN (‘June’, ‘July’)
GO

ما می‌توانیم خروجی را در تصویر زیر مشاهده کنیم که در آن کمترین فاکتور ۹۹ دلار است درحالی‌که در مثال بالا در جولای ۲۰۲۱، ۲۹۹ دلار بود.

امیدوارم نحوه استفاده از این تابع را درک کرده باشید. شما می‌توانید با استفاده از این تابع از هر ستونی، کمترین یا حداقل مقدار را دریافت کنید، حتی می‌توانید با استفاده از عبارت WHERE، کمترین یا حداقل مقدار رابین عبارات مشخص شده فیلتر کنید. بخش بعدی کاربردهای آن را با دستور GROUP BY توضیح خواهد داد.

از تابع SQL MIN با دستور GROUP BY استفاده کنید

این تابع اغلب با دستور GROUP BY برای گروه‌بندی خروجی بر اساس عبارت مشخص شده استفاده می‌شود. سناریوهای استفاده مختلفی وجود دارد که عبارت GROUP BY در آنها مفید است. اجازه دهید یک نیاز را به شما نشان دهم که در آن می‌خواهید کمترین فاکتور را از هر ماه فهرست کنید. با استفاده از عبارت GROUP BY در ستون MONTH، می‌توانید به‌راحتی با استفاده از این تابع این کار را انجام دهید.

SELECT MIN (price) AS [Lowest Invoice]
FROM Sales
GROUP BY InvoiceMonth
GO

این عبارت تمام فاکتورها را به‌صورت ماهانه گروه‌بندی می‌کند و طبق تصویر زیر کمترین قیمت فاکتور را از هر ماه برمی‌گرداند.

کوئری فوق را در کل جدول بدون قراردادن فیلتر اجرا کردم. نتیجه، خروجی داده‌های هر ماه ذخیره شده در آن جدول را نشان می‌دهد.

همچنین می‌توانید لیستی از کمترین فاکتور در ماه از ماه‌های مشخص شده دریافت کنید. دستور زیر را اجرا کنید تا کمترین قیمت فاکتور آنها را از ماه‌های ژوئیه و ژوئن دریافت کنید.

SELECT MIN (price) AS [Lowest Invoice]
FROM Sales
WHERE InvoiceMonth IN (‘June’, ‘July’)
GROUP BY InvoiceMonth
GO

خروجی زیر جزئیات مربوط به دو ماه مشخص شده «ژوئن» و «ژوئیه» را نشان می‌دهد. شما می‌توانید نتیجه فوق را بر اساس هر تعداد ورودی مشخص شده فیلتر کنید، همان‌طور که ما فقط برای ۲ ماه در اینجا تعیین کرده‌ایم تا این نمایش را به شما نشان دهیم.

استفاده از تابع SQL MIN با دستور ORDER BY

همچنین می‌توانیم از تابع SQL MIN با دستور ORDER BY استفاده کنیم. می‌توانیم از دستور ORDER BY برای مرتب‌سازی خروجی‌هایی که با استفاده از دستور GROUP BY برگردانده می‌شوند، استفاده کنیم. فقط به خروجی داده شده در مثال‌های بالا از دستور GROUP BY نگاه کنید. کافی است ORDER BY را در کوئری بالا اضافه می‌کنیم تا خروجی آن را دریافت کنیم.

SELECT MIN (price) AS [Lowest Invoice]
FROM Sales
GROUP BY InvoiceMonth
ORDER BY MIN(Price)
GO

خروجی کوئری بالا همان چیزی است که برای عبارت GROUP BY نشان می‌دهد، هر دو دارای ۴ ردیف هستند. تنها تفاوت بین هر دو خروجی این است که دستور ORDER BY خروجی را به ترتیب صعودی مرتب کرده است درحالی‌که دستور GROUP BY نتایج خروجی را به ترتیب تصادفی برمی‌گرداند.

استفاده از تابع SQL MIN با دستور HAVING

بیایید جنبه دیگری از پرس‌وجو مثال بالا را ببینیم، با افزودن یک خط کد برای عبارت HAVING، پسوند کوئری فوق خواهد بود. در نظر بگیرید، می‌خواهید تمام ماه‌هایی را که حداقل هزینه فاکتور شما در آن‌ها کمتر از ۱۵۰ دلار پردازش نشده است، پیدا کنید. به‌عبارت‌دیگر می‌توان گفت تمامی فاکتورهای پردازش شده در آن ماه بیش از ۱۵۰ دلار بوده و حتی یک فاکتور نیز کمتر از ۱۵۰ دلار قیمت‌گذاری نشده است.

پرس‌وجوی زیر تمام ماه‌هایی را که حتی حداقل فاکتور در آن ماه از ۱۵۰ دلار بیشتر است، برمی‌گرداند.

SELECT MIN (price) AS [Lowest Invoice]
FROM Sales
GROUP BY InvoiceMonth
HAVING MIN(Price) > 150
GO

جولای ماهی است که در آن‌همه فاکتورهای بیشتر از ۱۵۰ دلار را پردازش کرده‌ایم و کمترین فاکتور پردازش شده در آن ماه ۲۹۹ دلار بوده است.اگر می‌خواهید فهرست تمام ماه‌هایی را دریافت کنید که حداقل فاکتور شما کمتر از ۱۵۰ دلار و نه بیشتر از ۱۵۰ دلار بوده است، این الزام را برعکس کنیم. به‌عبارت‌دیگر، پرس‌وجو زیر تمام ماه‌هایی را که حداقل یک فروش با کمتر از ۱۵۰ دلار داشته‌ایم را برمی‌گرداند و تمام ماه‌هایی را که کمترین قیمت فاکتور بیشتر از ۱۵۰ دلار است را حذف می‌کند.

SELECT MIN (price) AS [Lowest Invoice]
FROM Sales
GROUP BY InvoiceMonth
HAVING MIN(Price)> 150
GO

خروجی پرس‌وجوی بالا نتیجه را در تصویر زیر نشان می‌دهد که در آن هیچ جزئیاتی برای ماه جولای وجود ندارد.

از تابع SQL MIN با سایر توابع جمعی مانند MAX، AVG، SUM استفاده کنید

همچنین می‌توانیم از تابع SQL MIN به همراه سایر توابع جمعی مانند MAX، AVG، SUM و غیره استفاده کنیم.

  • MAX – این تابع بالاترین یا حداکثر مقدار را از ستون یا عبارت مشخص شده برمی‌گرداند.
  • AVG– این مقدار میانگین یک ستون یا عبارت مشخص شده را برمی‌گرداند.
  • SUM – این تابع مجموع تمام مقادیر یک ستون یا عبارت مشخص شده را برمی‌گرداند.

در زیر مثالی وجود دارد که من از سایر توابع مجموع برای دریافت کمترین، بالاترین، میانگین و کل هزینه فاکتور برای هر ماه استفاده کرده‌ام.

SELECT InvoiceMonth,
MIN (price) AS [Lowest Invoice],
MAX(price) AS [Highest Invoice],
AVG(price) AS [Average Invoice],
SUM(price) AS [Total Invoice]
FROM Sales
GROUP BY InvoiceMonth
GO

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

SELECT InvoiceMonth,
MIN (price) AS [Lowest Invoice],
MAX(price) AS [Highest Invoice],
AVG(price) AS [Average Invoice],
SUM(price) AS [Total Invoice]
FROM Sales
GROUP BY InvoiceMonth
HAVING MIN(Price) > 150
GO

مثال زیر کمترین، بالاترین، متوسط و کل هزینه فاکتور را در هر ماه‌ نشان می‌دهد که هیچ فاکتوری کمتر از ۱۵۰ دلار بررسی نشده است. این بدان معناست که تمام فاکتورهای پردازش شده در ماه جولای بیش از ۱۵۰ دلار بوده است.

از تابع MIN با دستور WHERE استفاده کنید

مثال‌های زیادی در بالا آورده‌ام که با استفاده از آنها می‌توانیم نحوه استفاده از تابع SQL MIN با عبارت WHERE را بیاموزیم، اما این بخش نحوه استفاده از دستور MIN را در عبارت WHERE توضیح می‌دهد. دستور زیر جزئیات مربوط به فاکتوری را که با حداقل یا کمترین قیمت پردازش شده است، نمایش می‌دهد.

SELECT name,
City,
Designation,
InvoiceMonth,
Price,
Product
FROM Sales AS s
JOIN Employee AS e
ON e.ID=s.PersonID
WHERE price = (select MIN(price) from sales)
GO

خروجی جزئیات فاکتور مانند نام، شهر، محصول و ماه‌ها را همراه با کمترین هزینه فاکتور نشان می‌دهد.در صورتی‌ که بیش از یک فاکتور با همان مبلغ پردازش شده باشد، درخواست فوق همه فاکتورها را برمی‌گرداند. اجازه دهید این را با افزودن ورودی دیگری با همان قیمت فاکتور به شما نشان دهم. من یک ردیف دیگر برای ماه می با همان قیمت ۹۹ دلار اضافه کردم تا بفهمم که آیا همه نتایج را با همان کمترین قیمت دریافت خواهیم کرد یا خیر. اکنون می‌بینیم که هر دو جزئیات فاکتور در خروجی خود نشان داده می‌شوند.

نتیجه گیری

من یک نمای کلی و موارد استفاده مختلف از تابع SQL MIN را توضیح داده‌ام. این تابع برای برگرداندن حداقل یا کمترین مقدار از ستون مشخص شده در آن تابع استفاده می‌شود. می‌توانید با نگاه‌کردن به مثال‌های ارائه شده در بخش‌های بالا، کاربردهای آن را بیاموزید.

لطفاً نظرات خود را با ما در میان بگذارید.

منبع

https://www.sqlshack.com/understanding-the-sql-min-statement-and-its-use-cases

 

 

برای بدست آوردن اطلاعات بیش‌تر در مورد دیگر دستورات SQL ، به مقاله زیر مراجعه کنید.
 
دستورهای SQL Server

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

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

اولین نفر باش

title sign
دانلود مقاله
نحوه کار با تابع MIN() در SQL Server
فرمت PDF
10 صفحه
حجم 1 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
402 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
title sign
دیدگاه کاربران