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

می‌توانید سوال‌های خود را از بخش "سوال بپرسید" مطرح کنید.

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

آمارگیری - دیتابیس


کد شما باید روی نسخه‌ی استاندارد MySQL قابل اجرا باشد. برای چک کردن سینتکس کد SQL خود می‌توانید از این وبسایت کمک بگیرید.


محمود به‌تازگی در تیم فنی اسنپ باکس استخدام شده و برای شروع، تسک‌های مختلفی به او محول شده است. او باید اطلاعات مختلفی را در MySQL دریافت کند تا بتوانند خدمات بهتری به کاربران ارائه دهند.

جزئیات پروژه🔗

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

جداولی که محمود قرار است با آن‌ها کار کند به‌شرح زیر هستند:

  1. اطلاعات کاربران (users):
نام ستون نوع تعریف ملاحضات
id int(11) شناسه‌ی کاربر primary key auto_increment
name varchar(255) نام کاربر
phone varchar(255) شماره تماس کاربر
  1. اطلاعات سفیران (drivers):
نام ستون نوع تعریف ملاحضات
id int(11) شناسه‌ی کاربر primary key auto_increment
name varchar(255) نام کاربر
phone varchar(255) شماره تماس کاربر
  1. اطلاعات مرسولات (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 زمان تحویل مرسوله
  1. اطلاعات سفارشات (orders):
نام ستون نوع تعریف ملاحضات
delivery_id int(11) شناسه‌ی مرسوله‌ی مربوط به سفارش primary key & foreign key (deliveries:id)
price decimal(10,2) قیمت سفارش
  1. امتیاز کاربران به سفارشات (rates):
نام ستون نوع تعریف ملاحضات
delivery_id int(11) شناسه‌ی مرسوله‌ی مربوط به امتیاز primary key & foreign key (deliveries:id)
rate enum('1', '2', '3', '4', '5') امتیاز کاربر به سفارش (۱ به معنای کم‌ترین و ۵ به معنای بیش‌ترین)

مطلوبات🔗

کوئری‌های SQL خواسته‌شده از شما موارد زیر است (توجه کنید که هر کوئری نمره‌ای جداگانه دارد و اگر کوئری یک قسمت را نتوانستید بزنید، کوئری‌هایی که حل کردید را بفرستید و قسمت آن کوئری را خالی بگذارید):

  1. شناسه‌ی کاربرانی که نام آن‌ها با Ali آغاز می‌شود را به‌ترتیب صعودی برگردانید (بزرگی و کوچکی حروف مهم نیست).
  2. مجموع قیمت سفارشات در سال ۲۰۲۰ را برگردانید (یک سفارش در سال ۲۰۲۰ محسوب می‌شود، اگر زمان درخواست ارسال مرسوله در سال ۲۰۲۰ باشد). نوع داده‌ی خروجی باید برابر با نوع ستون price در جدول سفارشات باشد.
  3. شناسه‌ی ۱۰ سفیر برتر را به‌ترتیب نزولی میانگین امتیازات سفارشات برگردانید. اگر دو سفیر امتیاز یکسانی داشته باشند، ابتدا سفیری باید بیاید که شناسه‌اش کوچک‌تر است.
  4. شناسه‌ی مرسوله و شناسه‌ی سفیران مربوط به مرسولاتی که ارسال آن‌ها بیش‌تر یا مساوی ۳ ساعت طول کشیده است را به‌ترتیب صعودی شناسه‌ی مرسوله برگردانید.
  5. نام و شماره تماس افرادی که حداقل ۵ مرسوله با فاصله‌ی مکانی بزرگ‌تر یا مساوی ۲۰ کیلومتر ارسال کرده‌اند را به‌ترتیب صعودی الفبایی براساس نام افراد برگردانید. برای محاسبه‌ی فاصله‌ی مکانی، از طول و عرض جغرافیایی مبدأ و مقصد استفاده کنید.

نکته: نام ستون‌های خروجی مهم نیست. صرفاً ترتیب آن‌ها مهم است.

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

کد خود را در قالب زیر، در یک فایل با پسوند .sql قرار داده و آن را ارسال کنید (فایل را زیپ نکنید).

-- Section1
    your 1st query here
-- Section2
    your 2nd query here
-- Section3
    your 3rd query here
-- Section4
    your 4th query here
-- Section5
    your 5th query here
SQL
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.