دستور order by در sql – از کاربرد تا نحوه استفاده به زبان ساده

۵۵ بازدید
آخرین به‌روزرسانی: ۰۳ اردیبهشت ۱۴۰۳
زمان مطالعه: ۱۳ دقیقه
دستور order by در sql – از کاربرد تا نحوه استفاده به زبان ساده

معمولا لازم است که خروجی کوئری SQL با نظم مشخصی به کاربر نمایش داده شود. در این مطلب از مجله فرادرس روش‌های ممکن را برای نمایش داده‌ها در خروجی معرفی خواهیم کرد. تمام روش‌های مورد اشاره با بهره‌گیری از دستور order by در SQL انجام می‌گیرند. برای مرتب کردن رکورد‌ها در پایگاه داده‌های که بر پایه SQL هستند لازم است که از عبارت ORDER BY استفاده کنیم. در این مطلب به‌‌طور کامل و همراه با جزییات روش استفاده از دستور ORDER BY را برای مرتب کردن داده‌های خروجی توسط هر تعداد ستون مورد نظر، در حالت صعودی «A-Z» یا نزولی «Z-A» و با استفاده از ستون‌های موجود یا ستون‌های ایجاد شده توسط «توابع تجمعی» (Aggregate Function) توضیح داده‌ایم.

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

چگونه ردیف ها را در SQL مرتب کنیم؟

اگر خروجی کوئری SQL خود را مرتب نکنیم، ترتیب سطر در خروجی به صورت بی‌نظم و خام خواهد بود. اگر بخواهیم که سطرهای جدول استخراج شده‌ به عنوان داده جواب، با نظم مشخصی در خروجی نمایش داده شوند باید از دستور order by در SQL استفاده کنیم.

سینتکس پایه برای دستور ORDER BY   به شکل زیر است.

1SELECT ...columns...
2FROM table
3ORDER BY sorting_column ASC/DESC;

دستور بالا را با جزییات کامل در ادامه توضیح داده‌ایم.

  • بعد از کلمه کلیدی ORDER BY فقط کافی است که به‌سادگی ستون‌‌هایی را نام‌ ببرید که رکورد‌های آن‌ها باید مرتب شوند.
  • نیازی به نمایش ستون‌های مورد نظر در خروجی فهرست شده در عبارت SELECT  وجود ندارد.
  • باید خودمان به صورت صعودی یا نزولی، نظم مرتب‌سازی را تعیین کنیم. برای تعیین کردن نظم مرتب‌سازی از کلمات کلیدی DESC   و ASC   استفاده می‌‌شود. البته در این مورد خاص بهره‌ بردن از کلمه کلیدی ASC دلخواه است. یعنی اینکه اگر از هیچ کلمه کلیدی بعد از نام ستون استفاده نکنیم، به صورت پیش‌فرض ردیف‌ها با نظم صعودی مرتب خواهند شد.
  • محل قرارگیری عبارت ORDER BY در آخر کوئری تعیین شده است.

استفاده از دستور ORDER BY بر روی یک ستون

تصور کنید که فروشگاهی را اداره می‌کنیم که لوازم و لباس‌های جشن هالوین را می‌فروشد. در این فروشگاه انواع مختلفی از کالا شامل لباس‌ها costumes  ، ماسک‌ها masks  ، کلاه‌ها hats  و لوازم جانبی مخصوص جشن accessories  را در انبار ذخیره کرده‌ایم.

در پایین جدولی از محصولات انبار فروشگاه را به نام products  می‌بینید. ستون‌های جدول به ترتیب از سمت راست به چپ، با نام شماره شناسایی کالا id  ، نام کالا name  ، دسته‌بندی category  ، تعداد موجودی quantity   و قیمت price   نام‌گذاری شده‌اند. برای اینکه در جدول به‌شکل واقعی نمایش دهیم از کلمات معادل انگلیسی استفاده می‌کنیم.

 

idnamecategoryquantityprice
11Wonder Womancostumes219.95
12Vampiremasks43.95
13Magic Wandaccessories62.50
14Wizard of Ozhats33.95
15Supermancostumes314.95
16Hulkcostumes212.50
17Witchhats44.95
18Rapunzelcostumes0NULL
19Snow Whitecostumes123.95
20Freddy Kruegermasks33.95
21Alienmasks0NULL
22Cowboyhats34.95
23Ghostbusteraccessories213.95
24Swordaccessories73.50
25Zombiemasks82.95

شکل ساده دستور ORDER BY - مرتب کردن بر اساس یک ستون

ادامه مطلب را در این بخش با مثال ساده‌ای پی‌ گرفته‌ایم. در این مثال تلاش می‌کنیم که همه اجناس انبار را با توجه به ترتیب الفبا برحسب نام مرتب کنیم. برای مرتب کردن عناصر درون جدولی بر اساس الفبا، تنها کار این است که ستون نام کالا را در داده‌های مجموعه جواب به صورت صعودی مرتب کنیم. همان‌طور که می‌دانیم، ترتیب صعودی در دستور order by در SQL به صورت پیش‌فرض تعریف شده است. بنابراین کلمه کلیدی ASC را می‌توان از کوئری حذف کرد. به کوئری ساده‌ای که در ادامه نوشته‌ شده توجه کنید.

1SELECT *
2FROM products
3ORDER BY name;

در اثر اجرای این کوئری بر روی جدول بالا، جدولی به صورت زیر با همه رکورد‌ها نمایش داده می‌شود. در این جدول رکورد‌ها بر اساس حروف الفبای تشکیل دهنده نامشان از بالا به پایین منظم شده‌اند.

 

idnamecategoryquantityprice
21Alienmasks0NULL
22Cowboyhats34.95
20Freddy Kruegermasks213.95
16Hulkcostumes212.50
13Magic Wandaccessories22.50
18Rapunzelcostumes0NULL
19Snow Whitecostumes123.95
15Supermancostumes314.95
24Swordaccessories73.50
12Vampiremasks43.95
17Witchhats44.95
14Wizard of Ozhats33.95
11Wonder Womancostumes219.95
25Zombiemasks82.95

می‌بینیم که کد بالا به‌سادگی جواب مورد نظر را تولید کرد. در مرحله بعد کالاهای هالویینی خود را بر اساس قیمت مرتب خواهیم کرد. ترتیب قیمت‌ها از گرانترین کالا به سمت ارزانترین کالا به صورت نزولی خواهد بود. همان‌طور که گفتیم، برای ایجاد چنین ترتیبی با بهره‌گیری از دستور order by در SQL باید از کلمه کلیدی DESC استفاده کنیم.

افرادی به‌صورت نمادین بر بروی پایگاه داده کار می‌کنند. - دستور order by در sql

به کدی که در پایین نوشته شده توجه کنید تا در ادامه، نتیجه کوئری را بررسی کنیم.

1SELECT *
2FROM products
3ORDER BY price DESC;

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

idnamecategoryquantityprice
19Snow Whitecostumes123.95
11Wonder Womancostumes219.95
15Supermancostumes314.95
23Ghostbusteraccessories213.95
16Hulkcostumes212.50
17Witchhats44.95
22Cowboyhats34.95
14Wizard of Ozhats33.95
12Vampiremasks43.95
20Freddy Kruegermasks33.95
24Swordaccessories73.50
25Zombiemasks82.95
13Magic Wandaccessories62.50
21Alienmasks0NULL
18Rapunzelcostumes0NULL

همان‌طور که مشاهده می‌کنیم، کد نوشته شده بالا به راحتی، جدول مورد نظر را ایجاد کرد. در ادامه چند نکته جالب را درباره مرتب‌سازی در SQL مورد اشاره قرار داده‌ایم.

  • مرتب‌سازی ردیف‌ها با مقادیر یکسان: در جدول اصلی که ایجاد کرده‌ایم بعضی از کالا‌ها قیمت برابر با هم دارند. به‌طور مشخص می‌توانیم از کلاه hats   کابوی Cowboy  و جادوگر   Witch  به قیمت $4.95 مثال بزنیم. در حالی که کلاه جادوگر شهر اُز Wizard of Oz  و ماسک‌های خون‌آشام Vampire  و فردی کروگر Freddy Krueger  نیز قیمت یکسان و برابر با $3.95 دارند. در چنین مواردی SQL چگونه چنین سطر‌هایی را مرتب می‌کند؟ در واقع برای چنین مواردی هیچ قانون مشخصی وجود ندارد. در چنین موقعیت‌هایی نتایج نهایی، غیرقطعی یا به عبارتی تصادفی هستند. به عبارت دیگر، ممکن است ترتیب ردیف‌هایی که در ستون خاصی مقادیر یکسان دارند با هر بار اجرای کوئری مورد نظر تغییر کند. اگر نیاز داشته باشیم که ترتیب ردیف‌ها در جدول نهایی جواب همیشه ثابت و بی تغییر بماند باید از ستونی استفاده کنیم که شامل مقادیر یکتایی باشد. با کمک این ستون می‌توان جدول را مرتب کرد به‌طوری که با هر دفعه اجرای کوئری در جدول، جواب ثابتی در خروجی تولید شود. اما اگر به هر دلیلی چنین چیزی ممکن نباشد تنها راه ممکن استفاده از ترکیبی از ستون‌ها برای مرتب‌سازی ردیف‌های جدول است. با این کار در واقع می‌توانیم ترکیب یکتایی از داده‌های ستون‌‌‌های مختلف تولید کنیم. در نتیجه اجرای کوئری به صورت دائم نتیجه یکسانی را تولید خواهد کرد. در ادامه‌ همین مطلب، مرتب‌سازی داده‌های جدول را با کمک ترکیبی از داده‌های چندین ستون پوشش داده‌ایم.
  • رفتار «مرتب‌سازی» (Sorting) برای مقادیر NULL: در جدول نتیجه‌ بالا، ردیف‌هایی با مقدار NULL در ستون مرجع مرتب‌سازی در انتهای جدول نتیجه قرار گرفته‌اند. اگرچه که این رفتار در «پایگاه داده‌های رابطه‌ای» (Relational Databases) مختلف یکسان نیست. برای اجرا کردن این کوئری از پایگاه داده MySQL استفاده کرده‌ایم. این پایگاه داده مقادیر NULL را به عنوان کمترین مقدار ممکن در نظر می‌گیرد. بنابراین، پایگاه داده MySQL در زمان اجرای دستور مرتب‌سازی بر اساس حالت نزولی، مقادیر NULL را در انتهای جدول قرار می‌دهد. این نتیجه در پایگاه‌های داده SQL Server و SQLite نیز به همین سان است. از آنجا که در این مطلب رفتار دستور order by در SQL را بررسی می‌کنیم توجه کنید که نتیجه نهایی در ارتباط با مقادیر NULL به همین صورت خواهد بود. اما از طرف دیگر پایگاه‌های داده‌ای مانند PostgreSQL و Oracle با مقادیر NULL به عنوان بزرگترین مقدار ممکن رفتار می‌کنند. یعنی در صورت اجرای چنین کوئری در این پایگاه‌های داده ردیف‌هایی که این مقدار را دارند در بالاترین مکان جدول قرار می‌گیرند. البته به‌شرطی که مرتب‌سازی بر اساس حالت نزولی انجام شود. اما توجه کنید که در بیشتر موارد می‌توان رفتار پیش‌فرض عبارت ORDER BY را در ارتباط با مقدار NULL تغییر داد. در این مورد تقریبا هر پایگاه داده سینتکس کد مخصوص به خود را دارد که می‌توان به آن رجوع کرد.

در ادامه مطلب به بررسی مثال‌های پیچیده‌تر می‌پردازیم. در کوئری بالا از عبارت SELECT نیز در ابتدای کوئری استفاده کردیم. در صورتی که حس می‌کنید باید درباره این کلمه کلیدی مهم مطالب بیشتری بیاموزید می‌توانید از مطلب جامع و کامل دستور SELECT در SQL از مجله فرادرس استفاده کنید. در مطلب اشاره شده، این عبارت کلیدی SQL را در کامل‌ترین حالت و در عین حال به ساده‌ترین شکل ممکن توضیح داده‌ایم.

چند نفر مهندس به‌صورت مجازی در حال مدیریت ساختمان‌های نگهداری از داده‌ها هستند.

مرتب سازی بر اساس ستون ایجاد شده به وسیله توابع تجمعی

در SQL می‌توانیم ستون داده‌های نتیجه را بر اساس محاسباتی بر روی داده‌های یک یا چند ستون مرتب کنیم. مقادیر درون این ستون را می‌توان با استفاده از توابع تجمعی مانند AVG()    و SUM()   و COUNT()    و  MAX()  و MIN()  یا هر تابع دیگری محاسبه کرد. در ادامه مطلب روش اجرای این کار را در عمل نمایش داده‌ایم.

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

در ابتدا باید قیمت میانگین را برای هر دسته‌بندی محاسبه کنیم. سپس ردیف‌ها را بر طبق این ستون محاسبه شده به صورت نزولی مرتب می‌کنیم.

به کوئری نوشته شده در پایین توجه کنید.

1SELECT category, AVG(price) AS avg_price
2FROM products
3GROUP BY category
4ORDER BY avg_price DESC;

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

avg_pricecategory
17.84costumes
6.65accessories
4.62hats
3.62masks

بهتر است به این نکته توجه کنید که عبارت ORDER BY در زمان مراجعه به ستون مرتب‌سازی نشانه‌گذاری عددی را می‌پذیرد. برای مثال، برای اینکه مجموعه نتایج را بر اساس اولین ستون مرتب کنیم، به سادگی فقط کافی است که کد ORDER BY 1  را وارد کنیم.

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

1SELECT category, AVG(price) AS avg_price
2FROM products
3GROUP BY category
4ORDER BY 2 DESC;

از انجا که ستون avg_price   در عبارت SELECT نوشته شده بالا، دومین گزینه است، می‌توانیم با استفاده از شماره 2 در عبارت ORDER BY به آن اشاره کنیم.

این رویکرد در زمان نوشتن کوئری ها باعث صرفه جویی در زمان برای برنامه‌نویسان می‌شود. اما یک مشکل مهم دارد. اگر کوئری را با اضافه کردن فیلدهای بیشتر به عبارت SELECT تغییر دهیم، باید به یاد داشته باشیم که شماره قرار داده شده در عبارت ORDER BY هنوز به ستون مورد نظر اشاره می‌کند یا نیاز به اصلاح این شماره داریم. متاسفانه این مرحله اغلب نادیده گرفته می‌شود و باعث ایجاد ترتیب اشتباهی در مجموعه نتیجه می‌شود.

چگونه در زمینه یادگیری SQL حرفه ای تر شویم؟

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

مجموعه آموزش پایگاه داده از مبتدی تا حرفه‌ای - دستور order by در sql

در ادامه، چند مورد از بهترین فیلم‌های آموزشی که شاید در مرحله بعد مناسب ارتقای مهارت شما باشند را فهرست کرده‌ایم.

عبارت ORDER BY بر اساس چندین ستون

عبارت ORDER BY به مرتب کردن مجموعه داده‌های نتیجه گرفته شده بر اساس محاسباتی بر روی بیشتر از دو ستون نیز کمک می‌کند. اگرچه برای استفاده مناسب از این امکان باید روش کار عبارت ORDER BY را به‌طور کامل درک کنیم.

  • عملیات مرتب‌سازی، بر اساس چیدمان داده‌های اولین ستونی که در عبارت دستور order by در SQL تعریف شده شروع می‌شود. اگر این ستون شامل مقادیر مساوی با هم بود، ردیف‌های متناظر بر اساس ستون دومی که در عبارت ORDER BY فهرست شده به صورت منظم چیده می‌شوند و به همین ترتیب این فرایند تا آخرین ستونی که در عبارت ORDER BY تعریف شده ادامه دارد. بنابراین ترتیب ستون‌ها در تعریف عبارت دستور order by در SQL اهمیت دارد.
  • برای هرکدام از ستون‌های که در تعریف عبارت دستور order by در SQL فهرست شده‌اند می‌توانیم نظم چیدمان صعودی یا نزولی را تعیین کنیم. برای اینکه ترتیب چیدمان را تعیین کنیم، فقط کافی است که کلمه کلیدی ASC یا  DESC را بعد از نام هرکدام از ستون‌هایی که فهرست شده‌اند قرار دهیم. اگر کلمات کلیدی ASC یا  DESC را از کوئری حذف کنیم، به صورت پیش فرض داده‌های همه ستون‌ها را به صورت صعودی منظم می‌کند.
ساختمان‌های استوانه ای به عنوان نماد پایگاه ذخیره سازی داده دیده می‌شوند.

در ادامه مثال های بیشتری را برای درک مطلب نمایش داده‌ایم.

مرتب سازی بر اساس چندین ستون مختلف در SQL

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

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

به کوئری که در ادامه آمده توجه کنید.

1SELECT id, name, price
2FROM products
3ORDER BY price DESC, name;

به صورت دائم، با هر مرتبه اجرای کوئری بالا، فقط جدول زیر نمایش داده می‌شود.

idnameprice
19Snow White23.95
11Wonder Woman19.95
15Superman14.95
23Ghostbuster13.95
16Hulk12.50
22Cowboy4.95
17Witch4.95
20Freddy Krueger3.95
12Vampire3.95
14Wizard of Oz3.95
24Sword3.50
25Zombie2.95
13Magic Wand2.50
21AlienNULL
18RapunzelNULL

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

همان‌طور که می‌ببینید، اتفاقات جدول را به‌صورت زیر می‌توان شرح داد.

  • کلاه های کابوی و جادوگر قیمت مساوی داشتند. بنابراین بر اساس حروف الفبا منظم شده‌اند.
  • به همین صورت، گروه دیگری از آیتم‌ها که برابر با مبلغ 3.95$ قیمت گذاری شده‌اند نیز بر اساس حروف الفبای تشکیل دهنده نامشان به صورت مرتب چیده شده‌اند.
  • در نهایت، SQL مقادیر NULL را در ستون قیمت به صورت مقادیر یکسان در نظر می‌گیرد. بنابراین این موارد را نیز بر اساس حروف الفبای تشکیل دهنده نام آن‌ها دسته‌بندی می‌کنیم.

در زمان استفاده از چندین ستون برای مرتب‌سازی یا در واقع فهرست کردن نام چندین ستون در دستور order by در SQL می‌توانیم از شماره‌گذاری عددی نیز استفاده کنیم. این روش شماره‌گذاری عددی هم به همان شکل روش قبلی کار می‌کند. کوئری که در ادامه آمده همان نتیجه‌ای کوئری بالا را در خروجی برمی‌گرداند.

1SELECT id, name, price
2FROM items
3ORDER BY 3 DESC, 2;

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

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

مرتب سازی چندین ستون محاسبه شده

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

نمادهای پایگاه داده بر روی ضفحه‌ای با اتصالات نارنجی قرار دارند. - دستور order by در sql

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

شرایط مطلوب مورد نظر برای ترتیب داده‌های خروجی را در ادامه فهرست کرده‌ایم.

  • مجموعه تعداد کالاهای هر دسته‌بندی باید به صورت صعودی مرتب شوند.
  • بیشترین قیمت‌های محصولات مربوط به هر دسته‌بندی باید به صورت نزولی مرتب شوند.

کوئری مربوط به مرتب‌سازی بالا را با استفاده از دستور order by در SQL به صورت زیر نوشته‌ایم.

1SELECT
2  category,
3  SUM(quantity) AS total_quantity,
4  MAX(price) AS max_price
5FROM items
6GROUP BY category
7ORDER BY total_quantity, max_price DESC;

در اثر اجرای کوئری بالا جدول نهایی به‌شکل زیر در خروجی نمایش داده می‌شود.

categorytotal_quantitymax_price
costumes823.95
hats104.95
accessories1513.95
masks153.95

در کوئری نوشته شده بالا، تعداد کل کالاها را با استفاده از کد SUM(quantity)  محاسبه کردیم. سپس برای هر دسته‌بندی بیشترین قیمت کالا را نیز با استفاده از کد MAX(price)   در عبارت GROUP BY   محاسبه کردیم. همچنین به‌ترتیب نام‌های دلخواه total_quantity   و max_price   را به ستون‌های نمایش داده شده در جدول نهایی تخصیص دادیم. در نهایت داده‌های خروجی را مربوط به ستون total_quantity را به صورت صعودی -با حذف کردن کلمه کلیدی ASC از کوئری- و داده‌های خروجی مربوط به ستون max_price را به صورت نزولی -با استفاده از کلمه کلیدی DESC در کوئری- مرتب کردیم.

همان‌طور که انتظار می‌رفت، جدول با استفاده از تعداد کل کالاهای هر دسته‌بندی مرتب شده است. داده‌های این جدول از لباس‌های مخصوص جشن هالووین با کمترین تعداد در انبار مغازه شروع شدند.  اما توجه کنید که تعداد کالاهای لوازم جانبی جشن و ماسک‌ها با یکدیگر برابر بود. هر کدام از این دسته‌بندی‌ها شامل ۱۵ قلم کالا در انبار مغازه می‌شدند. در این مورد، مرتب‌سازی بر اساس داده‌های ستون دوم وارد عمل می‌شود و این دو دسته‌بندی را بر اساس قیمت گرانترین کالا‌ها مرتب می‌کند. به‌طور خاص دسته‌بندی لوازم جانبی از آنجا که شامل لوازم Ghostbusters   به قیمت 13.95$ می‌شود، در ابتدای جدول قرار می‌گیرد. در حالی که دسته‌بندی ماسک‌ها از آنجا که گرانترین ماسک فقط 3.95$ قیمت دارد در انتهای فهرست ظاهر می‌شود.

چگونه مهارت های خود را در زمینه استفاده  SQL Server ارتقا دهیم؟

برای اینکه در  زمینه کار با SQL Server حرفه‌ای‌تر و برای ورود به بازار کار آماده‌ شویم، از فیلم‌های آموزشی سطح بالای SQL Server می‌توانیم در وب‌سایت فرادرس استفاده کنیم. فرادرس این فیلم‌ها را طوری تهیه کرده‌ است که با کیفیت‌ترین آموزش‌ها در مناسب‌ترین زمان ممکن توسط بهترین اساتید هر بخش به مخاطبین منتقل شود. این فیلم‌های آموزشی نسبت به کلاس‌های حضوری هزینه بسیار مقرون به صرفه‌تری را پوشش می‌دهند و امکان بازبینی چندین‌باره فیلم‌ها کمک می‌کند که هر قسمت را به‌طور کامل متوجه شویم.

در ادامه چند مورد از این فیلم‌های آموزشی را فهرست کرده‌ایم.

مجموعه آموزش اس کیو ال سرور – مقدماتی تا پیشرفته

جمع بندی

یادگیری استفاده از عبارت ORDER BY به‌نظر کاملا ساده می‌آید. اما به‌هرحال مرتب‌سازی رکورد‌های SQL نکات ظریفی دارد که با اجرای تمرینات متوالی به بهترین حالت ممکن قابل یادگیری هستند. در این مطلب از مجله فرادرس درباره روش استفاده از دستور order by در SQL برای مرتب‌سازی داده‌ها اطلاعات مناسبی ارائه دادیم. اینکه چطور از عبارت ORDER BY بر روی یک یا چند ستون استفاده کنیم را با بهره‌گیری مثال‌های متفاوت به همراه کوئری صحیح برای هر مثال بررسی کردیم. دیدیم که می‌توانیم حتی بر روی ستون‌هایی که باید مرتب شوند نیز از توابع تجمعی استفاده کنیم.

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

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
LearnSQL
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *