لینک‌های مفید برای شرکت در مسابقه:

در طول مسابقه، می‌توانید سؤالات خود را از قسمت «سؤال بپرسید» مطرح کنید.

مسابقه‌ی محله


کوئری‌های شما باید روی 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 امتیاز لحاظ‌شده برای ارسال

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

در انتها باید بدانید که جدول امتیازات با در نظر گرفتن بیشترین امتیاز کاربر به‌دست می‌آید، یعنی ممکن است یک کاربر برای یک سؤال چند ارسال داشته باشد. در این‌صورت، باید بیشترین امتیاز او برای رتبه‌بندی در نظر گرفته شود.

مطلوبات🔗

کوئری‌های زیر را طوری بنویسید که خروجی خواسته‌شده به‌دست بیاید:

  1. لیست چالشی‌ترین سؤالات مسابقات: سؤالات مسابقات به‌ترتیب نزولی تعداد ارسال برای آن‌ها؛ در خروجی باید عنوان سؤال به‌همراه عنوان مسابقه‌ی مربوط به آن به‌ترتیب در قالب ستون‌های p_title و c_title وجود داشته باشد. در صورتی که تعداد ارسال‌های مربوط به دو ردیف برابر بود، باید ابتدا براساس p_title و سپس براساس c_title به‌صورت صعودی مرتب شوند.
  2. لیست مسابقات به‌ترتیب نزولی تعداد شرکت‌کننده: در خروجی باید عنوان مسابقه در قالب ستونی با نام title به همراه تعداد شرکت‌کننده‌ها در قالب ستونی با نام amount وجود داشته باشد. در‌صورتی که تعداد شرکت‌کننده‌های دو ردیف برابر باشد، باید براساس title به‌صورت صعودی مرتب شوند.
  3. جدول امتیازات مسابقه‌ای با عنوان mahale: برای جدول امتیازات باید ستون‌های نام کاربر با نام name به‌همراه امتیاز او با نام score وجود داشته باشد. در‌صورتی که امتیاز دو ردیف برابر باشد، باید بر‌اساس name به‌صورت صعودی مرتب شوند.
  4. پرافتخار‌ترین نفرات در همه‌ی مسابقات: در خروجی باید نام شرکت‌کننده با نام name به‌همراه امتیاز کل آن با نام score وجود داشته باشد. در‌صورتی که امتیاز دو ردیف برابر باشد، باید براساس مقدار ستون name به‌صورت صعودی مرتب شوند.
  5. کوئری‌ای بنویسید که عنوان مسابقه‌ای با عنوان mahale را به Mosabeghe Mahale تغییر دهد.
  6. کوئری‌ای بنویسید که تمامی مسابقاتی که ارسالی برای آن‌ها وجود ندارد را حذف کند.

آن‌چه باید آپلود کنید🔗

پس از طراحی کوئری‌ها، کد خود را در قالب زیر در یک فایل با پسوند .sql آپلود کنید.

-- Section1
   Your first query here
-- Section2
   Your second query here
-- Section3
   Your third query here
-- Section4
   Your fourth query here
-- Section5
   Your fifth query here
-- Section6
   Your sixth query here
SQL
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.