در ورودی دو رشته داده میشود و از شما خواسته شده است تا بررسی کنید این دو رشته در کنار هم زیبا هستند یا نه.
دو رشته در کنار هم زیبا هستند، اگر حرف اول رشتهی اولی، با حرف آخر رشتهی دومی برابر باشد.
ورودی شامل دو خط است که در هر خط یک رشته شامل حروف کوچک انگلیسی به طول حداکثر ۵۰ آمده است.
در صورتی که دو رشتهی داده در کنار هم زیبا هستند عبارت YES
و در غیر این صورت عبارت NO
را چاپ کنید.
از آنجا که حرف اول رشتهی salam
برابر با حرف آخر رشتهی khodafes
، یعنی s
است، پس این دو رشته در کنار هم زیبا هستند و باید عبارت YES
را چاپ کرد.
از آنجا که حرف اول رشتهی salam
، یعنی s
برابر با حرف آخر رشتهی salam
، یعنی m
نیست، پس این دو رشته در کنار هم زیبا نیستند و باید عبارت NO
را چاپ کرد.
از آنجا که حرف اول رشتهی snapp
، یعنی s
برابر با حرف آخر رشتهی box
، یعنی x
نیست، پس این دو رشته در کنار هم زیبا نیستند و باید عبارت NO
را چاپ کرد.
از آنجا که حرف اول رشتهی software
برابر با حرف آخر رشتهی engineers
، یعنی s
است، پس این دو رشته در کنار هم زیبا هستند و باید عبارت YES
را چاپ کرد.
ممد و احمد به دنبال راهی برای انتقال پیامی بسیار مهم هستند، پیامی که قرار است بین آن دو جابهجا شود به صورت یک رشتهی حرفی از حروف کوچک انگلیسی است و به علت اهمیت ماجرا تصمیم دارند این رشته را رمزگزاری کنند.
روش رمزگزاریای که این دو انتخاب کردند به این صورت است که ابتدا حرف آخر رشته را به اول رشته جابهجا میکنند و سپس تمامی حروف رشته را به حرف بعدی آن در الفبا تبدیل میکنند. (به عنوان مثال حرف c
به d
تبدیل میشود) همچنین حرف بعدی z
در الفبا را a
در نظر میگیریم. ممد که میگوید کار از محکم کاری عیب نمیکند، برای قویتر کردن رمزگزاری پیشنهاد کرده که این عملیات بار بر روی رشته انجام شود. آن دو که آرام و قرار ندارند از شما خواستهاند تا رشتهی نهایی را بدست آورید.
توجه کنید در هر مرحله از بار عملیات، هر دوی «انتقال حرف از آخر به اول» و «تبدیل هر حرف به حرف بعدی» انجام میشود.
در خط اول ورودی آمده که نشان دهندهی طول پیام است.
در خط دوم ورودی آمده که نشان دهندهی تعداد باری است که عملیات رمزگزاری باید صورت گیرد.
در خط سوم ورودی رشتهی مورد نظر آمده، تضمین میشود تمام حروف آن از حروف کوچک انگلیسی است.
در تنها خط خروجی رشتهی مورد نظر را پس از بار رمزگزاری خروجی دهید.
یک مرحله رمز گزاری به صورت زیر انجام میشود:
abz
به zab
تبدیل میشود.zab
به abc
تبدیل میشود.۲ عملیات اول روی رشتهی abcd
به صورت زیر خواهد بود:
d
) به اول رشته منتقل میشود و به رشتهی dabc
خواهیم رسید.ebcd
خواهیم رسید.d
) به اول رشته منتقل میشود و به رشتهی debc
خواهیم رسید.efcd
خواهیم رسید.۳ عملیات باقیمانده به طور مشابه صورت میگیرند و در انتها به رشتهی ifgh
خواهیم رسید.
جدولی داریم که هر خانهی آن یک شهر است، میخواهیم از خانهی در جدول شروع کنیم و هر مرحله با توجه به علائم به شهرهای دیگر برویم. علائم به صورت عدد روی هر شهر نوشته شده که هر عدد معنای خاص خود را دارد. به طور دقیقتر اگر اکنون در شهر خانهی باشیم (که در آن شمارهی سطر و شمارهی ستون است) و عدد نوشته شده روی این شهر باشید حالات زیر را داریم:
حال تشخیص دهید بعد از مرحله دنبال کردن علائم به کدام شهر میرسیم.
در خط اول ورودی آمده که به ترتیب نشان دهندهی تعداد سطرها، ستونها و تعداد مراحلی است که باید علائم را دنبال کرد. سپس در هر خط از خط بعدی عدد آمده که نشان دهندهی اعداد نوشته شده بر روی خانههای جدول (شهرها) است. به طور دقیقتر امین عدد در سطر ام برابر است که عدد نوشته شده روی شهر میباشد.
در تنها خط خروجی به ترتیب شمارهی سطر و ستون خانهی نهایی را چاپ کنید.
زیرمسئله | نمره | محدودیتها |
---|---|---|
۱ | ۶۰ | عدد هیچ یک از خانههای جدول اول نیست. |
۲ | ۱۴۰ | بدون محدودیت |
توجه کنید که نمره سوال از ۲۰۰ نمره است.
ابتدا در خانهی شروع میکنیم از آنجایی که برابر با ۶ است و خانهی چپی وجود ندارد باید به برویم. حال چون عددی اول و برابر با ۷ است به خانهی قرینهی آن نسبت به وسط جدول یعنی میرویم. سپس با توجه به چون خانهی چپی وجود ندارد به میرویم و در آخر (مرحلهی چهارم) باید به خانهی بالایی یعنی برویم.
با شروع از خانهی به قرینهی آن نسبت به وسط جدول میرویم و به میرسیم، در ۷ مرحلهی بعد بین خانههای و جابهجا میشویم و با دنبال کردن این حرکات به خانهی خواهیم رسید.
زبان برنامهنویسی Bython که به تازگی عرضه شده است، فقط دستورات زیر را دارد:
نام دستور | فرم کلی دستور | توضیح دستور |
---|---|---|
Assignment | A = expression | مقدار expression را در متغیر A ذخیره میکند. |
Input | ()voroodi | یک عدد از ورودی میخواند و آن را بر میگرداند. |
khoorooji(List) | مقادیر موجود در List را به ترتیب چاپ میکند. | |
If Statement | agar condition : A = expression | در صورتی برقراری condition ، مقدار expression در متغیر A ذخیره میشود. |
که در جدول بالا مقادیر condition ، List ، expression و متغیر به این صورت تعریف میشوند:
تعریف expression:
تعریف List:
تعریف condition:
تعریف متغیر:
حال به شما دنبالهای از دستورات زبان Bython و همچنین دنبالهای از مقادیر ورودی داده شده است و از شما خواسته شده است تا خروجی را گزارش کنید. و پس از آن، تعداد متغیرهایی که حداقل یک بار مقداردهی شدهاند را نیز چاپ کنید.
ورودی شامل دو بخش است که در بخش اول دستورات برنامه در چند خط آمده است و پس از آن در یک خط رشتهی -----
آمده است سپس ورودیهای برنامه، هر کدام در یک خط آمده است.
تعداد خطهای دستورات از ۵۰ بیشتر نخواهد بود.
تضمین میشوند تعداد ورودیهای برنامه برابر با تعداد دستورهای Input است و همچنین هر متغیر قبل از استفاده مقداردهی میشود.
تمام اعداد داده شده در دستورات، اعداد طبیعی و مثبت خواهند بود، اما ممکن است در هنگام اجرای دستورات، مقدار متغیری منفی شود.
در خروجی، به ازای هر دستور Print خروجی آن را در یک خط چاپ کنید. سپس در یک خط، تعداد متغیرهایی که حداقل یکبار مقداردهی شدهاند را خروجی دهید.
تضمین میشود حداقل یک دستور Print در دستورات برنامه وجود دارد.
زیرمسئله | نمره | محدودیتها |
---|---|---|
۱ | ۲۵ | فقط دستور Assignment و Print موجود است و در دستور Print تنها یک ورودی داریم. |
۲ | ۷۵ | دستور If Statement نداریم. |
۳ | ۱۵۰ | بدون محدودیت |
توجه کنید نمره سوال از ۲۵۰ نمره است.
مقدار متغیر پس از اجرای دستورات برابر ۶ خواهد بود و تعداد متغیرهایی که حداقل یکبار مقداردهی شدهاند برابر با ۳ است. (متغیرهای و و )
مقدار متغیر پس از اجرای دستورات برابر ۴ خواهد بود و تعداد متغیرهایی که حداقل یکبار مقداردهی شدهاند برابر با ۱ است. (متغیر )
مقدار متغیر پس از اجرای دستورات برابر ۳ خواهد بود و تعداد متغیرهایی که حداقل یکبار مقداردهی شدهاند برابر با ۱ است. (متغیر )
میخواهیم سیستم سفارش گرفتن و تخصیص رانندهها به سفارشها را برای اسنپ باکس شبیه سازی کنیم.
در ابتدا هیچ راننده و یا سفارشی نداریم. در هر مرحله یا یک راننده به سیستم اضافه میشود یا یک سفارش در سیستم ثبت میشود یا یک راننده درخواست میکند که یک سفارش به او تخصیص شود.
هر راننده بعد از تخصیص یک سفارش مرحله به مرحله گزارش میدهد که فرآیند ارسال این سفارش از فرستنده به گیرنده در کدام مرحله قرار دارد.
از شما میخواهیم با دریافت این اطلاعات این سامانه را شبیه سازی کنید. همچنین سیستم شبیه ساز شما باید قابلیت پاسخ دادن به درخواستهایی که در پایین تر تعریف کردیم را داشته باشد.
راننده (DRIVER
) سفارش را از فرستنده تحویل گرفته و به گیرنده تحویل میدهد.
برای هر راننده ویژگیهای زیر تعریف میشود:
USERNAME
):🔗یک رشته که فقط شامل حروف کوچک و بزرگ انگلیسی و ارقام است و حداکثر شامل ۲۵ کاراکتر میشود.
SERVICE-CATEGORY
):🔗وسیلهی نقلیه راننده را نشان میدهد و مقدار آن همواره یکی از موارد زیر است.
BIKE
)VAN
)TRUCK
)CREDIT
):🔗یک عدد حسابی است که مقدار پولی که راننده در حساب اسنپ خود دارد را نشان میدهد. میزان سرمایه اولیه هر راننده به صورت پیشفرض برابر صفر است. میزان اعتبار هر راننده بعد از تحویل یک سفارش (یعنی زمانی که وضعیت سفارش به DELIVERED
تغییر کند.) به اندازه % هزینه سفارش افزایش پیدا میکند.
POSITION
):🔗موقعیت مکانی هر راننده به صورت یک زوج مرتب است که و دو عدد صحیح هستند. برای نمایش و دریافت یک POSITION
ابتدا یک (
سپس عدد بلافاصله ,
سپس با یک فاصله عدد و بلافاصله )
نمایش داده میشود.
به طور مثال موقعیت مکانی یک راننده میتواند به صورت (57, 31)
یا (0, -74)
باشد اما (0 , -74)
یا ( 57 31)
نمایش قابل قبولی نیست.
STATUS
):🔗بطور کلی راننده دارای دو وضعیت زیر است:
FREE
)BUSY
)اگر یک راننده در حال انجام دادن یک سفارش باشد یعنی در حال رفتن به سمت فرستنده برای دریافت محموله (به عبارت دیگر محموله تخصیص یافته به آن در حالت ARRIVED
باشد.) یا در حال رفتن به سمت گیرنده برای تحویل محموله (به عبارت دیگر سفارش تخصیصیافته به آن در حالت PICKUP
باشد.) باشد؛ راننده در وضعیت BUSY
و اگر هیچ سفارشی به این راننده تخصیص نشده یا همه سفارشهایی که به او تخصیص شده را تحویل داده است (یعنی وضعیت سفارشهای تخصیصیافته DELIVERED
باشد.) وضعیت راننده FREE
است.
برای هر سفارش (ORDER
) ویژگیهای زیر قابل تعریف است:
SERVICE-CATEGORY
):🔗وسیلهی مورد نیاز برای جابهجایی این سفارش را نشان میدهد و مقدار آن همواره یکی از موارد زیر است.
BIKE
)VAN
)TRUCK
)STARTING-POSITION
):🔗موقعیت مکانی فرستنده به صورت یک زوج مرتب است که و دو عدد صحیح هستند. نمایش و دریافت موقعیت مکانی فرستنده مشابه موقعیت مکانی راننده است.
FINISHING-POSITION
):🔗موقعیت مکانی گیرنده به صورت یک زوج مرتب است که و دو عدد صحیح هستند. نمایش و دریافت موقعیت گیرنده مشابه موقعیت مکانی راننده است.
COST
):🔗هزینه هر سفارش با توجه به فرمول زیر محاسبه میشود:
فرض کنید موقعیت مکانی فرستنده و موقعیت مکانی گیرنده باشد. اگر تعداد سفارشهایی که هم اکنون منتظر راننده با همین نوع وسیله هستند (یعنی وضعیت آنها PENDING
است.) شامل همین سفارش، برابر باشد این هزینه برابر است با:
توجه کنید بعد تحویل هر سفارش % هزینه به اعتبار (CREDIT
) راننده اضافه میشود و % باقی مانده به حساب اسنپ باکس اضافه میشود. (با توجه به رابطه بالا این دو عدد همواره عدد صحیح خواهند بود.)
ORDER-ID
):🔗شماره یک سفارش است اگر امین سفارشی باشد که با موفقیت در سیستم ثبت شده باشد.
STATUS
):🔗وضعیت هر سفارش چهار حالت دارد:
PENDING
: هنوز رانندهای به این سفارش تخصیص داده نشده است.ARRIVED
: یک راننده به این سفارش تخصیص داده شده و به سمت فرستنده این سفارش در حال حرکت است.PICKUP
: راننده این سفارش را از فرستنده تحویل گرفته و در حال حرکت به سمت گیرنده است.DELIVERED
: سفارش با موفقیت به گیرنده تحویل داده شده است.منظور از فاصله بین دو نقطه و در این سوال برابر است با:
از شما میخواهیم درخواستهای زیر را برای این سامانه پیاده سازی کنید:
ADD-DRIVER
این درخواست به معنی اضافه شدن یک راننده (DRIVER
) به سیستم است.
به جای <DRIVER-USERNAME>
یک رشته که نشان دهنده نام راننده، به جای <POSITION>
موقعیت مکانی فعلی راننده که یک زوج مرتب از اعداد صحیح است و به جای <SERVICE-CATEGORY>
نوع وسیله راننده که یک رشته برابر BIKE
یا VAN
یا TRUCK
است قرار دارد.
برای مثال یک نمونه از این درخواست به صورت زیر خواهد بود:
ADD-DRIVER shahin021 (13, 74) BIKE
بعد از دریافت این نوع درخواست، در صورتی که این نام برای رانندهای دیگر قبلاً استفاده شده است عبارت user previously added
را چاپ کنید و در صورتی که نام راننده قبلاً در سیستم ثبت نشده عبارت user added successfully
را چاپ کنید.
میزان اعتبار یک راننده در لحظه اضافه شدن به سیستم برابر صفر است. وضعیت یک راننده بعد از اضافه شدن به سیستم FREE
است چون هنوز هیچ سفارشی به او تخصیص نشده است.
CREATE-ORDER
این درخواست به معنی اضافه شدن یک سفارش (ORDER
) به سیستم است.
به جای <SERVICE-CATEGORY>
یک رشته که نوع وسیلهای که برای انجام این سفارش نیاز است قرار دارد و مقدار آن برابر BIKE
یا VAN
یا TRUCK
است. منظور از <START-POSITION>
موقعیت مکانی فرستنده سفارش است، همچنین منظور از <FINISH-POSITION>
موقعیت مکانی گیرنده سفارش است. هر دو این مقدارها به صورت یک زوج مرتب از اعداد صحیح به همان روش توضیح داده شده آمده است.
برای مثال یک نمونه از این درخواست به صورت زیر خواهد بود:
CREATE-ORDER TRUCK (-100, 100) (100, -100)
بعد از دریافت این درخواست، در صورتی که <START-POSITION>
برابر <FINISH-POSITION>
باشد عبارت invalid order
و در غیر این صورت شماره این سفارش را برای این سفارش ثبت و سپس چاپ کنید.
هزینه این سفارش (COST
) در این لحظه، از فرمول توضیح داده شده محاسبه میشود. همچنین وضعیت (STATUS
) یک سفارش بلافاصله بعد از ایجاد PENDING
خواهد بود.
ASSIGN-NEXT-ORDER
این درخواست به معنی تقاضا یک راننده برای تخصیص به نزدیکترین سفارش است.
در صورتی که رانندهای به چنین اسمی نداریم عبارت invalid driver name
را چاپ کنید. در صورتی که وضعیت این راننده BUSY
است عبارت driver is already busy
را چاپ کنید. در صورتی که سفارشی در وضعیت PENDING
با وسیله یکسان با راننده وجود ندارد عبارت there is no order right now
را چاپ کنید.
در صورتی که هیچ کدام از حالتهای بالا پیش نیامد سفارشی با وضعیت PENDING
را انتخاب میکنیم که کمترین فاصله با موقعیت مکانی فعلی راننده را دارد. اگر چند سفارش با فاصله برابر وجود داشتند سفارشی را انتخاب میکنیم که زودتر به سیستم اضافه شده است. سپس عبارت زیر را چاپ میکنیم.
که ORDER-ID
به معنی شماره سفارش تخصیص یافته به راننده با نام USERNAME
است. بعد از این تخصیص وضعیت (STATUS
) راننده به BUSY
و وضعیت (STATUS
) سفارش به ARRIVED
تغییر خواهد کرد.
GET-DRIVER
در این درخواست وضعیت یک راننده پرسیده میشود.
در صورتی که رانندهای به چنین اسمی نداریم عبارت invalid driver name
را چاپ کنید. در غیر این صورت، ابتدا STATUS
این راننده را چاپ کنید (یعنی در صورت مشغول بودن رشته BUSY
و در غیراین صورت رشته FREE
را چاپ کنید.). سپس با یک فاصله موقعیت مکانی فعلی راننده را چاپ کنید سپس با یک فاصله اعتبار حساب راننده را چاپ کنید.
ORDER-UPDATE
در این دستور یک راننده تغییر وضعیت سفارش خود را اعلام میکند.
در صورتی که رانندهای به چنین اسمی در سیستم وجود ندارد عبارت invalid driver name
را چاپ کنید. در صورتی که شماره سفارش تخصیص یافته به این راننده برابر ORDER-ID
نیست عبارت wrong order-id
را چاپ کنید. در صورتی که تغییر وضعیت قابل قبول نیست عبارت invalid status
و در غیر این صورت عبارت status changed successfully
را چاپ کنید.
توجه کنید وضعیت یک سفارش به صورت زیر تغییر میکند:
PENDING -> ARRIVED -> PICKUP -> DELIVERED
پس تغییر وضعیت، قابل قبول است اگر به دقیقاً به مرحله بعدی برود. (به طور مثال نباید وضعیت یک سفارش در یک مرحله از PENDING
به PICKUP
تغییر کند یا نباید وضعیت یک سفارش به وضعیت فعلی خودش تغییر کند.)
زمانی که وضعیت یک سفارش به حالت DELIVERED
تغییر میکند. 80 درصد هزینه سفارش به حساب راننده اضافه میشود و 20 درصد باقی مانده به حساب شرکت اضافه میشود. (تضمین میشود هزینهای که باید به حساب راننده یا شرکت اضافه شود عدد صحیح است.)
در صورتی که وضعیت سفارش به PICKUP
تغییر کند موقعیت مکانی راننده به موقعیت مکانی فرستنده سفارش تغییر میکند.
در صورت تغییر وضعیت سفارش به DELIVERED
وضعیت راننده به FREE
و موقعیت مکانی راننده به گیرنده سفارش تغییر میکند.
GET-ORDER
در این درخواست وضعیت یک سفارش را پیگیری میکنیم.
در صورتی که چنین سفارشی وجود ندارد عبارت invalid order
و در غیر این صورت در یک خط ابتدا وضعیت (STATUS
) این سفارش سپس با یک فاصله نام (USERNAME
) رانندهای که در حال ارسال این سفارش است و در نهایت با یک فاصله، هزینه (COST
) ارسال این سفارش را چاپ کنید.
اگر این سفارش به هیچ رانندهای تخصیص پیدا نکرده است عبارت None
را به جای نام راننده چاپ کنید.
GET-ORDER-LIST
در این درخواست لیست تمام سفارشهایی که وضعیتشان برابر <STATUS>
است را چاپ کنید.
شماره تمام سفارشهایی که وضعیت (STATUS
) آنها برابر <STATUS>
است را در یک خط با یک فاصله بین شمارهها چاپ کنید. اگر هیچ سفارشی در این وضعیت نبود کلمه None
را چاپ کنید.
GET-DRIVER-LIST
در این درخواست لیست تمام رانندههایی که وضعیتشان برابر <STATUS>
است را چاپ کنید.
نام تمام رانندههایی که وضعیت (STATUS
) آنها برابر <STATUS>
است را با یک فاصله بین نامها در یک خط چاپ کنید. اگر هیچ رانندهای در این وضعیت نبود کلمه None
را چاپ کنید.
GET-NEAR-DRIVER
در این درخواست COUNT
تا نزدیک ترین راننده به نقطه <POSITION>
با وضعیت FREE
را میپرسیم.
این لیست را به ترتیب فاصله چاپ کنید (یعنی نام رانندهای که فاصلهی کمتری با نقطهی موردنظر دارد، باید قبل از نام رانندهای که فاصلهی بیشتری با نقطهی موردنظر دارد، چاپ شود.). اگر دو راننده فاصله یکسانی داشتند رانندهای که زودتر به سیستم اضافه شده را زودتر چاپ کنید.
در صورتی که تعداد رانندهها کمتر از COUNT
بود همه رانندههای قابل قبول را چاپ کنید. در صورت خالی بودن لیست None
چاپ کنید.
GET-CNT-ORDER
در این درخواست تعداد سفارشاتی که محل فرستنده یا گیرنده (بستگی به START
یا FINISH
بودن درخواست) که از نقطه POSITION
فاصله حداکثر DISTANCE
دارند را چاپ کنید.
دقت کنید که <START/FINISH>
، همواره یکی از مقادیر START
یا FINISH
را داراست.
GET-NEAREST-PENDING-ORDER
شماره (ORDER-ID
) نزدیک ترین سفارش با وضعیت PENDING
که فرستنده آن به POSITION
است را چاپ کنید.
اگر چنین سفارشی وجود نداشت کلمه None
و در غیر این صورت شماره سفارش را چاپ کنید.
GET-COMPANY
در این درخواست سود شرکت را از سفارشهای تحویل داده شده تا این لحظه چاپ کنید.
پاسخ همواره به صورت یک عدد صحیح است.
در هر سطر از ورودی یکی از انواع درخواستهای تعریف شده داده میشود. قدرمطلق همه اعداد داده شده حداکثر و تعداد درخواستها در این سوال حداکثر خواهد بود.
در هر سطر خروجی عبارت متناسب با درخواستها را به ترتیب چاپ کنید. در آخرین خط ورودی تنها کلمه END
برای نشان دادن پایان دستورات نوشته میشود.
کد شما باید روی نسخهی استاندارد MySQL قابل اجرا باشد. برای چک کردن سینتکس کد SQL خود میتوانید از این وبسایت کمک بگیرید.
محمود بهتازگی در تیم فنی اسنپ باکس استخدام شده و برای شروع، تسکهای مختلفی به او محول شده است. او باید اطلاعات مختلفی را در MySQL دریافت کند تا بتوانند خدمات بهتری به کاربران ارائه دهند.
فایل دادههای اولیه برای تست نمونه را از این لینک دانلود کنید.
جداولی که محمود قرار است با آنها کار کند بهشرح زیر هستند:
users
):نام ستون | نوع | تعریف | ملاحضات |
---|---|---|---|
id |
int(11) |
شناسهی کاربر | primary key auto_increment |
name |
varchar(255) |
نام کاربر | |
phone |
varchar(255) |
شماره تماس کاربر |
drivers
):نام ستون | نوع | تعریف | ملاحضات |
---|---|---|---|
id |
int(11) |
شناسهی کاربر | primary key auto_increment |
name |
varchar(255) |
نام کاربر | |
phone |
varchar(255) |
شماره تماس کاربر |
deliveries
):نام ستون | نوع | تعریف | ملاحضات |
---|---|---|---|
id |
int(11) |
شناسهی مرسوله | primary key auto_increment |
user_id |
int(11) |
شناسهی کاربر | foreign key (users:id) |
driver_id |
int(11) |
شناسهی سفیر | foreign key (drivers:id) |
src |
point(latitude, longitude) |
نقطهی مبدأ (طول و عرض جغرافیایی) | |
dest |
point(latitude, longitude) |
نقطهی مقصد (طول و عرض جغرافیایی) | |
requested_at |
datetime |
زمان درخواست ارسال مرسوله | |
delivered_at |
datetime |
زمان تحویل مرسوله |
orders
):نام ستون | نوع | تعریف | ملاحضات |
---|---|---|---|
delivery_id |
int(11) |
شناسهی مرسولهی مربوط به سفارش | primary key & foreign key (deliveries:id) |
price |
decimal(10,2) |
قیمت سفارش |
rates
):نام ستون | نوع | تعریف | ملاحضات |
---|---|---|---|
delivery_id |
int(11) |
شناسهی مرسولهی مربوط به امتیاز | primary key & foreign key (deliveries:id) |
rate |
enum('1', '2', '3', '4', '5') |
امتیاز کاربر به سفارش (۱ به معنای کمترین و ۵ به معنای بیشترین) |
کوئریهای SQL خواستهشده از شما موارد زیر است (توجه کنید که هر کوئری نمرهای جداگانه دارد و اگر کوئری یک قسمت را نتوانستید بزنید، کوئریهایی که حل کردید را بفرستید و قسمت آن کوئری را خالی بگذارید):
Ali
آغاز میشود را بهترتیب صعودی برگردانید (بزرگی و کوچکی حروف مهم نیست).price
در جدول سفارشات باشد.نکته: نام ستونهای خروجی مهم نیست. صرفاً ترتیب آنها مهم است.
کد خود را در قالب زیر، در یک فایل با پسوند .sql
قرار داده و آن را ارسال کنید (فایل را زیپ نکنید).