توابع MIN()
و MAX()
در MySQL جزو توابع تجمعی (Aggregate Functions) هستند که برای یافتن کمترین و بیشترین مقدار در یک ستون دادهای استفاده میشوند.
این توابع روی دادههای عددی، متنی و تاریخی کار میکنند و در گزارشگیری، تحلیل دادهها و تهیه خلاصههای آماری بسیار مفید هستند.
۱. تعریف توابع MIN و MAX
✅ تابع MIN()
تابع MIN()
کوچکترین مقدار یک ستون را برمیگرداند.
SELECT MIN(column_name) FROM table_name;
✅ تابع MAX()
تابع MAX()
بزرگترین مقدار یک ستون را برمیگرداند.
SELECT MAX(column_name) FROM table_name;
۲. استفاده از MIN و MAX روی دادههای عددی
این توابع برای یافتن کمترین و بیشترین مقدار در ستونهای عددی به کار میروند.
مثال: یافتن کمترین و بیشترین قیمت محصول
SELECT MIN(price) AS min_price, MAX(price) AS max_price FROM products;
🔹 MIN(price)
کمترین مقدار قیمت را پیدا میکند.
🔹 MAX(price)
بیشترین مقدار قیمت را پیدا میکند.
۳. استفاده از MIN و MAX روی دادههای متنی
در MySQL، این توابع بر اساس ترتیب الفبایی روی رشتههای متنی کار میکنند.
مثال: یافتن اولین و آخرین نام در لیست کاربران
SELECT MIN(name) AS first_name, MAX(name) AS last_name FROM users;
🔹 MIN(name)
کوچکترین مقدار بر اساس ترتیب الفبایی (اولین نام).
🔹 MAX(name)
بزرگترین مقدار بر اساس ترتیب الفبایی (آخرین نام).
✅ نکته: ترتیب الفبایی بر اساس کدهای ASCII تعیین میشود، یعنی حروف بزرگ قبل از حروف کوچک قرار میگیرند.
۴. استفاده از MIN و MAX روی دادههای تاریخی
این توابع برای یافتن قدیمیترین و جدیدترین تاریخها در پایگاه داده استفاده میشوند.
مثال: یافتن اولین و آخرین سفارش ثبتشده
SELECT MIN(order_date) AS first_order, MAX(order_date) AS last_order FROM orders;
🔹 MIN(order_date)
تاریخ اولین سفارش.
🔹 MAX(order_date)
تاریخ آخرین سفارش.
۵. استفاده از MIN و MAX همراه با GROUP BY
MIN()
و MAX()
میتوانند همراه با GROUP BY
برای یافتن کمترین و بیشترین مقدار در هر گروه استفاده شوند.
مثال: یافتن کمترین و بیشترین قیمت محصول در هر دستهبندی
SELECT category, MIN(price) AS min_price, MAX(price) AS max_price
FROM products GROUP BY category;
🔹 برای هر دستهبندی (category
)، کمترین و بیشترین قیمت محاسبه میشود.
۶. استفاده از MIN و MAX همراه با WHERE
میتوان این توابع را همراه با WHERE
برای اعمال فیلتر روی دادهها استفاده کرد.
مثال: یافتن کمترین و بیشترین سن کاربرانی که در تهران هستند
SELECT MIN(age) AS min_age, MAX(age) AS max_age FROM users WHERE city = 'تهران';
🔹 این کوئری کمترین و بیشترین سن کاربران ساکن تهران را برمیگرداند.
۷. استفاده از MIN و MAX همراه با SUBQUERY
میتوان از این توابع در زیرپرسوجوها (Subqueries) برای یافتن رکوردهایی که مقدارشان برابر کمترین یا بیشترین مقدار است، استفاده کرد.
مثال: دریافت اطلاعات محصولی که ارزانترین قیمت را دارد
SELECT * FROM products WHERE price = (SELECT MIN(price) FROM products);
🔹 این کوئری اطلاعات محصولی که ارزانترین قیمت را دارد نمایش میدهد.
مثال: دریافت اطلاعات گرانترین محصول
SELECT * FROM products WHERE price = (SELECT MAX(price) FROM products);
🔹 این کوئری اطلاعات گرانترین محصول را نمایش میدهد.
۸. تفاوت MIN و MAX با ORDER BY + LIMIT
MIN()
و MAX()
مقدار تنها یک مقدار از یک ستون را برمیگردانند، اما اگر بخواهید رکورد کامل را دریافت کنید، از ORDER BY
+ LIMIT
استفاده کنید.
مثال: دریافت اطلاعات کامل از ارزانترین محصول
SELECT * FROM products ORDER BY price ASC LIMIT 1;
🔹 این کوئری اطلاعات کامل اولین محصول بر اساس قیمت صعودی (کمترین قیمت) را نمایش میدهد.
مثال: دریافت اطلاعات کامل از گرانترین محصول
SELECT * FROM products ORDER BY price DESC LIMIT 1;
🔹 این کوئری اطلاعات کامل اولین محصول بر اساس قیمت نزولی (بیشترین قیمت) را نمایش میدهد.
✅ ORDER BY + LIMIT
رکورد کامل را نمایش میدهد، اما MIN()
و MAX()
فقط مقدار یک ستون را برمیگردانند.
۹. مقایسه MIN
و MAX
با سایر توابع تجمعی
تابع | کاربرد |
---|---|
MIN(column) | یافتن کمترین مقدار در یک ستون |
MAX(column) | یافتن بیشترین مقدار در یک ستون |
AVG(column) | محاسبه میانگین مقادیر یک ستون |
SUM(column) | محاسبه مجموع مقادیر یک ستون |
COUNT(column) | شمارش تعداد رکوردها |
۱۰. نکات بهینهسازی هنگام استفاده از MIN و MAX
استفاده از ایندکس برای بهبود عملکرد
🔹 اگر ستون مورد استفاده درMIN()
یاMAX()
ایندکس داشته باشد، اجرای کوئری سریعتر خواهد بود.CREATE INDEX idx_price ON products(price);
🔹 حالا اجرای:
SELECT MIN(price) FROM products;
بسیار سریعتر خواهد بود.
استفاده از WHERE برای کاهش تعداد رکوردهای اسکنشده
SELECT MAX(salary) FROM employees WHERE department = 'IT';
🔹 این کار باعث کاهش رکوردهای پردازششده و افزایش سرعت میشود.
استفاده از LIMIT + ORDER BY برای دریافت اطلاعات کامل
🔹 اگر به همه اطلاعات رکورد نیاز دارید، بهجایMIN()
یاMAX()
، ازORDER BY + LIMIT
استفاده کنید.
نتیجهگیری
MIN()
کمترین مقدار وMAX()
بیشترین مقدار یک ستون را برمیگردانند.- این توابع روی دادههای عددی، متنی و تاریخی کار میکنند.
- میتوان از این توابع همراه با
GROUP BY
برای یافتن مقادیر حداقل و حداکثر در هر گروه استفاده کرد. - میتوان آنها را همراه با
WHERE
برای اعمال فیلتر به کار برد. - اگر به اطلاعات کامل رکورد با کمترین یا بیشترین مقدار نیاز دارید، بهتر است از
ORDER BY + LIMIT
استفاده کنید. - استفاده از ایندکسها باعث افزایش سرعت اجرای کوئری میشود.
✅ با درک درست از MIN()
و MAX()
، میتوان گزارشهای تحلیلی دقیقی از پایگاه داده ایجاد کرد.