دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
توابع مقایسه ای در پایگاه داده اوراکل
1403/07/14 -
توابع تاریخ در پایگاه داده اوراکل
1403/07/12 -
توابع ریاضی در پایگاه داده اوراکل
1403/07/11 -
توابع رشته ای در پایگاه داده اوراکل
1403/07/10 -
مدیریت زمانبندی (Job) در پایگاه داده اوراکل
1403/07/09 -
مدیریت Trigger در پایگاه داده اوراکل
1403/07/08
مرتب سازی و گروه بندی در پایگاه داده اوراکل
مرتبسازی گروهبندی در پایگاه داده اوراکل
مرتبسازی گروهبندی در پایگاه داده اوراکل به معنای ترکیب دو عملیات اساسی یعنی گروهبندی (GROUP BY) و مرتبسازی (ORDER BY) برای سازماندهی دادهها است.
با استفاده از این قابلیت، دادهها ابتدا بر اساس یک یا چند ستون گروهبندی میشوند، و سپس میتوان نتایج را بر اساس معیارهای مختلف مانند تعداد، مجموع، میانگین یا سایر توابع تجمیعی مرتب کرد.
این فرایند به کاربران امکان میدهد تا دادهها را بهصورت دستهبندی شده و منظم دریافت کرده و تحلیلهای دقیقتری انجام دهند.
گروهبندی دادهها معمولاً به همراه توابع تجمیعی مثل SUM، COUNT یا AVG انجام میشود، که برای محاسبه مقادیر کل یا میانگین در گروههای مشخص به کار میروند.
پس از گروهبندی، میتوان با استفاده از دستور ORDER BY نتایج را بهصورت صعودی یا نزولی مرتب کرد، که به ویژه در گزارشهای آماری و تحلیل دادههای بزرگ بسیار مفید است.
این عملیات برای استخراج اطلاعات مفید از دادههای پیچیده و حجیم ضروری است.
در این مقاله، دستورهای مربوط به مرتبسازی و گروهبندی را همراه با مثالها بررسی میکنیم و چگونگی استفاده بهینه از آنها را توضیح خواهیم داد.
مرتبسازی (Sorting) در اوراکل
مرتبسازی یکی از رایجترین عملیات روی دادهها است. این عملیات برای نمایش دادهها بهصورت منظم بر اساس یک یا چند ستون مورد استفاده قرار میگیرد.
در اوراکل، برای مرتبسازی دادهها از دستور ORDER BY استفاده میشود.
با استفاده از این دستور، دادهها میتوانند به صورت صعودی (ASC) یا نزولی (DESC) مرتب شوند.
دستور ORDER BY
SELECT column1, column2, ... FROM table_name ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
-
ASC
مرتبسازی به صورت صعودی (پیشفرض)
-
DESC
مرتبسازی به صورت نزولی
مثال ۱: مرتبسازی صعودی
برای مرتبسازی لیست کارمندان بر اساس حقوق به صورت صعودی:
SELECT first_name, last_name, salary FROM employees ORDER BY salary ASC;
این کوئری لیست کارمندان را بر اساس حقوق آنها به صورت صعودی مرتب میکند.
مثال ۲: مرتبسازی نزولی
برای مرتبسازی کارمندان بر اساس حقوق به صورت نزولی:
SELECT first_name, last_name, salary FROM employees ORDER BY salary DESC;
در این مثال، رکوردها بر اساس حقوق بهصورت نزولی مرتب میشوند؛ یعنی کارمند با بالاترین حقوق در صدر لیست قرار میگیرد.
مرتبسازی بر اساس چند ستون
اگر بخواهید دادهها را بر اساس چندین ستون مرتب کنید، ابتدا رکوردها بر اساس اولین ستون مرتب شده و در صورت تکرار مقادیر آن ستون، مرتبسازی بر اساس ستون بعدی صورت میگیرد.
SELECT first_name, last_name, department_id, salary FROM employees ORDER BY department_id ASC, salary DESC;
در این کوئری، ابتدا مرتبسازی بر اساس ستون department_id به صورت صعودی انجام شده و سپس در صورت مشابه بودن مقادیر department_id، مرتبسازی بر اساس salary به صورت نزولی صورت میگیرد.
گروهبندی (Grouping) در اوراکل
گروهبندی یکی دیگر از عملیاتهای پرکاربرد است که برای دستهبندی دادهها بر اساس مقادیر یک یا چند ستون و انجام عملیات تجمیعی روی آنها استفاده میشود.
برای گروهبندی دادهها از دستور GROUP BY استفاده میشود.
این دستور معمولاً در همراهی با توابع تجمیعی مانند SUM، COUNT، AVG، MIN و MAX به کار میرود.
دستور GROUP BY
SELECT column1, function(column2) FROM table_name GROUP BY column1;
-
column1
ستونی که بر اساس آن گروهبندی انجام میشود. -
function
توابع تجمیعی مانند SUM، COUNT و غیره.
مثال ۳: گروهبندی برای محاسبه مجموع حقوق بر اساس بخش
در این مثال، مجموع حقوق کارمندان در هر بخش محاسبه میشود:
SELECT department_id, SUM(salary) FROM employees GROUP BY department_id;
این کوئری کارمندان را بر اساس بخشهای مختلف (department_id) گروهبندی کرده و مجموع حقوق هر بخش را محاسبه میکند.
مثال ۴: شمارش تعداد کارمندان در هر بخش
برای شمارش تعداد کارمندان در هر بخش میتوان از دستور COUNT همراه با GROUP BY استفاده کرد:
SELECT department_id, COUNT(*) FROM employees GROUP BY department_id;
این کوئری تعداد کارمندان در هر بخش را برمیگرداند.
استفاده از شرط در گروهبندی: HAVING
گاهی نیاز داریم که پس از گروهبندی، فقط گروههایی که معیارهای خاصی دارند را نمایش دهیم.
در این موارد، از دستور HAVING استفاده میکنیم.
این دستور مانند WHERE عمل میکند، اما برای دادههای گروهبندی شده به کار میرود.
مثال ۵: نمایش بخشهایی با مجموع حقوق بیش از ۵۰,۰۰۰
برای نمایش بخشهایی که مجموع حقوق کارمندان آنها بیش از ۵۰,۰۰۰ است:
SELECT department_id, SUM(salary) FROM employees GROUP BY department_id HAVING SUM(salary) > 50000;
در این کوئری، پس از گروهبندی دادهها بر اساس department_id، فقط گروههایی که مجموع حقوق آنها بیشتر از ۵۰,۰۰۰ است، نمایش داده میشوند.
ترکیب مرتبسازی و گروهبندی
در بسیاری از موارد، نیاز داریم که دادههای گروهبندی شده را مرتب کنیم. این کار با ترکیب دستورات GROUP BY و ORDER BY امکانپذیر است.
مثال ۶: گروهبندی و مرتبسازی بر اساس مجموع حقوق
فرض کنید میخواهید مجموع حقوق هر بخش را محاسبه کرده و سپس بخشها را بر اساس این مجموع بهصورت نزولی مرتب کنید:
SELECT department_id, SUM(salary) AS total_salary FROM employees GROUP BY department_id ORDER BY total_salary DESC;
در این مثال، ابتدا کارمندان بر اساس department_id گروهبندی شده و مجموع حقوق هر بخش محاسبه میشود. سپس نتایج بر اساس مقدار مجموع حقوق بهصورت نزولی مرتب میشوند.
توابع تحلیلی و مرتبسازی
علاوه بر ORDER BY
و GROUP BY
، اوراکل توابع تحلیلی (Analytic Functions) ارائه میدهد که به شما اجازه میدهند محاسبات پیچیدهتری را روی دادههای مرتب یا گروهبندی شده انجام دهید.
یکی از این توابع، ROW_NUMBER()
است که برای شمارهگذاری ردیفها بر اساس مرتبسازی خاص استفاده میشود.
مثال ۷: رتبهبندی کارمندان بر اساس حقوق
برای اختصاص یک شماره رتبه به هر کارمند بر اساس حقوق (بهصورت نزولی):
SELECT first_name, last_name, salary, ROW_NUMBER() OVER (ORDER BY salary DESC) AS rank FROM employees;
در این مثال، تابع ROW_NUMBER() به هر کارمند یک شماره ردیف بر اساس حقوق اختصاص میدهد، بهطوریکه کارمند با بالاترین حقوق در رتبه ۱ قرار میگیرد.
نکات مهم در مرتبسازی و گروهبندی در اوراکل
-
پیشفرض صعودی در ORDER BY
اگر جهت مرتبسازی مشخص نشود، دادهها بهصورت پیشفرض صعودی مرتب خواهند شد. -
عملکرد GROUP BY
هنگام استفاده از GROUP BY، مطمئن شوید که ستونهای انتخابشده در بخش SELECT یا تابعی تجمیعی دارند یا در دستور GROUP BY آورده شدهاند. -
ترکیب ORDER BY با توابع تحلیلی
استفاده از توابع تحلیلی مانند ROW_NUMBER یا RANK میتواند قابلیتهای پیشرفتهتری برای تجزیه و تحلیل دادههای مرتب شده فراهم کند. -
بهینهسازی کوئری
استفاده از ایندکسها میتواند به بهبود عملکرد کوئریهای دارای ORDER BY و GROUP BY کمک کند.
دوره های مرتبط
اموزش پایگاه داده اوراکل Oracle
در دوره آموزش پایگاه داده اوراکل اصول ، مفاهیم ، طراحی ، پیادهسازی و مدیریت پایگاه داده را به صورت جامع آموزش می دهیم .