لینکهای مفید برای شرکت در مسابقه:
در طول مسابقه، میتوانید سؤالات خود را از قسمت «سؤال بپرسید» مطرح کنید.
کوئریهای شما باید روی MySQL قابل اجرا باشند.
مسعود قصد دارد مسابقهی محله را اینبار بهصورت آنلاین برگزار کند. او این مسابقات را برگزار کرده و دادههایی را جمعآوری کرده، اما متأسفانه برای کار با این دادهها ناتوان است.
برای این کار به او کمک کنید.
دادههای اولیه برای تست نمونه را از این لینک دانلود کنید.
ساختار جداول بهشرح زیر است:
جدول users
: از این جدول برای نگهداری اطلاعات کاربران استفاده میشود. ساختار این جدول بهصورت زیر است:
نام ستون | نوع | تعریف |
---|---|---|
id |
BIGINT |
شناسهی کاربر |
name |
VARCHAR(255) |
نام کاربر |
جدول contests
: از این جدول برای نگهداری اطلاعات مسابقات استفاده میشود. ساختار این جدول بهصورت زیر است:
نام ستون | نوع | تعریف |
---|---|---|
id |
BIGINT |
شناسهی مسابقه |
title |
VARCHAR(255) |
عنوان مسابقه |
جدول problems
: از این جدول برای نگهداری سؤالات مسابقات استفاده میشود. ساختار این جدول بهصورت زیر است:
نام ستون | نوع | تعریف |
---|---|---|
id |
BIGINT |
آیدی |
contest_id |
VARCHAR(255) |
آیدی مسابقه |
title |
VARCHAR(255) |
عنوان سوال |
جدول submissions
: از این جدول برای نگهداری ارسالهای کاربران برای سؤالات مسابقات استفاده میشود. ساختار این جدول بهصورت زیر است:
نام ستون | نوع | تعریف |
---|---|---|
id |
BIGINT |
شناسهی ارسال |
user_id |
BIGINT |
شناسهی کاربر |
problem_id |
BIGINT |
شناسهی سؤال |
score |
BIGINT |
امتیاز لحاظشده برای ارسال |
همانطور که در ساختار جداول مشاهده میکنید، هر مسابقه دارای سؤالاتی است و هر کاربر میتواند برای این سؤالات راهحل ارسال کند و امتیاز کسب کنند.
در انتها باید بدانید که جدول امتیازات با در نظر گرفتن بیشترین امتیاز کاربر بهدست میآید، یعنی ممکن است یک کاربر برای یک سؤال چند ارسال داشته باشد. در اینصورت، باید بیشترین امتیاز او برای رتبهبندی در نظر گرفته شود.
کوئریهای زیر را طوری بنویسید که خروجی خواستهشده بهدست بیاید:
p_title
و c_title
وجود داشته باشد. در صورتی که تعداد ارسالهای مربوط به دو ردیف برابر بود، باید ابتدا براساس p_title
و سپس براساس c_title
بهصورت صعودی مرتب شوند.title
به همراه تعداد شرکتکنندهها در قالب ستونی با نام amount
وجود داشته باشد. درصورتی که تعداد شرکتکنندههای دو ردیف برابر باشد، باید براساس title
بهصورت صعودی مرتب شوند.mahale
: برای جدول امتیازات باید ستونهای نام کاربر با نام name
بههمراه امتیاز او با نام score
وجود داشته باشد. درصورتی که امتیاز دو ردیف برابر باشد، باید براساس name
بهصورت صعودی مرتب شوند.name
بههمراه امتیاز کل آن با نام score
وجود داشته باشد. درصورتی که امتیاز دو ردیف برابر باشد، باید براساس مقدار ستون name
بهصورت صعودی مرتب شوند.mahale
را به Mosabeghe Mahale
تغییر دهد.پس از طراحی کوئریها، کد خود را در قالب زیر در یک فایل با پسوند .sql
آپلود کنید.