معمولا لازم است که خروجی کوئری 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
نامگذاری شدهاند. برای اینکه در جدول بهشکل واقعی نمایش دهیم از کلمات معادل انگلیسی استفاده میکنیم.
id | name | category | quantity | price |
11 | Wonder Woman | costumes | 2 | 19.95 |
12 | Vampire | masks | 4 | 3.95 |
13 | Magic Wand | accessories | 6 | 2.50 |
14 | Wizard of Oz | hats | 3 | 3.95 |
15 | Superman | costumes | 3 | 14.95 |
16 | Hulk | costumes | 2 | 12.50 |
17 | Witch | hats | 4 | 4.95 |
18 | Rapunzel | costumes | 0 | NULL |
19 | Snow White | costumes | 1 | 23.95 |
20 | Freddy Krueger | masks | 3 | 3.95 |
21 | Alien | masks | 0 | NULL |
22 | Cowboy | hats | 3 | 4.95 |
23 | Ghostbuster | accessories | 2 | 13.95 |
24 | Sword | accessories | 7 | 3.50 |
25 | Zombie | masks | 8 | 2.95 |
شکل ساده دستور ORDER BY – مرتب کردن بر اساس یک ستون
ادامه مطلب را در این بخش با مثال سادهای پی گرفتهایم. در این مثال تلاش میکنیم که همه اجناس انبار را با توجه به ترتیب الفبا برحسب نام مرتب کنیم. برای مرتب کردن عناصر درون جدولی بر اساس الفبا، تنها کار این است که ستون نام کالا را در دادههای مجموعه جواب به صورت صعودی مرتب کنیم. همانطور که میدانیم، ترتیب صعودی در دستور order by در SQL به صورت پیشفرض تعریف شده است. بنابراین کلمه کلیدی ASC
را میتوان از کوئری حذف کرد. به کوئری سادهای که در ادامه نوشته شده توجه کنید.
1SELECT *
2FROM products
3ORDER BY name;
در اثر اجرای این کوئری بر روی جدول بالا، جدولی به صورت زیر با همه رکوردها نمایش داده میشود. در این جدول رکوردها بر اساس حروف الفبای تشکیل دهنده نامشان از بالا به پایین منظم شدهاند.
id | name | category | quantity | price |
21 | Alien | masks | 0 | NULL |
22 | Cowboy | hats | 3 | 4.95 |
20 | Freddy Krueger | masks | 2 | 13.95 |
16 | Hulk | costumes | 2 | 12.50 |
13 | Magic Wand | accessories | 2 | 2.50 |
18 | Rapunzel | costumes | 0 | NULL |
19 | Snow White | costumes | 1 | 23.95 |
15 | Superman | costumes | 3 | 14.95 |
24 | Sword | accessories | 7 | 3.50 |
12 | Vampire | masks | 4 | 3.95 |
17 | Witch | hats | 4 | 4.95 |
14 | Wizard of Oz | hats | 3 | 3.95 |
11 | Wonder Woman | costumes | 2 | 19.95 |
25 | Zombie | masks | 8 | 2.95 |
میبینیم که کد بالا بهسادگی جواب مورد نظر را تولید کرد. در مرحله بعد کالاهای هالویینی خود را بر اساس قیمت مرتب خواهیم کرد. ترتیب قیمتها از گرانترین کالا به سمت ارزانترین کالا به صورت نزولی خواهد بود. همانطور که گفتیم، برای ایجاد چنین ترتیبی با بهرهگیری از دستور order by در SQL باید از کلمه کلیدی DESC
استفاده کنیم.
به کدی که در پایین نوشته شده توجه کنید تا در ادامه، نتیجه کوئری را بررسی کنیم.
1SELECT *
2FROM products
3ORDER BY price DESC;
نتیجه اجرای کوئری بالا بر روی جدول موجود در پایگاه داده به صورت زیر نمایش داده میشود.
id | name | category | quantity | price |
19 | Snow White | costumes | 1 | 23.95 |
11 | Wonder Woman | costumes | 2 | 19.95 |
15 | Superman | costumes | 3 | 14.95 |
23 | Ghostbuster | accessories | 2 | 13.95 |
16 | Hulk | costumes | 2 | 12.50 |
17 | Witch | hats | 4 | 4.95 |
22 | Cowboy | hats | 3 | 4.95 |
14 | Wizard of Oz | hats | 3 | 3.95 |
12 | Vampire | masks | 4 | 3.95 |
20 | Freddy Krueger | masks | 3 | 3.95 |
24 | Sword | accessories | 7 | 3.50 |
25 | Zombie | masks | 8 | 2.95 |
13 | Magic Wand | accessories | 6 | 2.50 |
21 | Alien | masks | 0 | NULL |
18 | Rapunzel | costumes | 0 | NULL |
همانطور که مشاهده میکنیم، کد نوشته شده بالا به راحتی، جدول مورد نظر را ایجاد کرد. در ادامه چند نکته جالب را درباره مرتبسازی در 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_price | category |
17.84 | costumes |
6.65 | accessories |
4.62 | hats |
3.62 | masks |
بهتر است به این نکته توجه کنید که عبارت 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 بر اساس چندین ستون
عبارت 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;
به صورت دائم، با هر مرتبه اجرای کوئری بالا، فقط جدول زیر نمایش داده میشود.
id | name | price |
19 | Snow White | 23.95 |
11 | Wonder Woman | 19.95 |
15 | Superman | 14.95 |
23 | Ghostbuster | 13.95 |
16 | Hulk | 12.50 |
22 | Cowboy | 4.95 |
17 | Witch | 4.95 |
20 | Freddy Krueger | 3.95 |
12 | Vampire | 3.95 |
14 | Wizard of Oz | 3.95 |
24 | Sword | 3.50 |
25 | Zombie | 2.95 |
13 | Magic Wand | 2.50 |
21 | Alien | NULL |
18 | Rapunzel | NULL |
در این جدول فقط سه ستون را انتخاب کردهایم. بنابراین بسیار سادهتر میتوانیم بر روی نتایج مرتبسازی تمرکز کنیم.
همانطور که میببینید، اتفاقات جدول را بهصورت زیر میتوان شرح داد.
- کلاه های کابوی و جادوگر قیمت مساوی داشتند. بنابراین بر اساس حروف الفبا منظم شدهاند.
- به همین صورت، گروه دیگری از آیتمها که برابر با مبلغ 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 به صورت زیر نوشتهایم.
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;
در اثر اجرای کوئری بالا جدول نهایی بهشکل زیر در خروجی نمایش داده میشود.
category | total_quantity | max_price |
---|---|---|
costumes | 8 | 23.95 |
hats | 10 | 4.95 |
accessories | 15 | 13.95 |
masks | 15 | 3.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 حتما به دانش استفاده از این عبارت، نیاز خواهید داشت. تمرین و تسلط بر روی این عبارت و روشهای استفاه از آن از ما برنامهنویس و مدیر پایگاه داده حرفهایتری میسازد که در نهایت میتواند باعث فرصتهای شغلی بیشتر و ورود به پروژههای حرفهایتر شود.
source