کوئریهای شما باید روی MySQL قابل اجرا باشند.
یکی از تیمهای فنی گروه اسنپ قصد دارد برخی از کوئریهای خود که مربوط به بخش سفارشها هستند را با استفاده از ایندکسها سریعتر کند. به آنها در این کار کمک کنید.
دادههای سؤال را از این لینک دانلود کنید.
جدولی با نام orders برای نگهداری اطلاعات سفارشها موجود است که ساختار آن به شرح زیر است:
نام ستون نوع تعریف
id BIGINT(20) شناسهی سفارش
user_id BIGINT(20) شناسهی کاربر سفارشدهنده
total DECIMAL(10,2) مبلغ سفارش
created_at DATETIME زمان ثبت سفارش
کوئریهای SQL خواستهشده از شما، موارد زیر است:
1- کوئری ساخت ایندکس جهت بهینهسازی حداکثری سرعت محاسبهی مجموع مبلغ سفارشها در سال ۲۰۲۰:
SELECT SUM(total)
FROM orders
WHERE created_at BETWEEN '2020-01-01 00:00:00' AND '2020-12-31 23:59:59'
2- کوئری ساخت ایندکس جهت بهینهسازی حداکثری سرعت محاسبهی مجموع مبلغ سفارشهای کاربری با شناسهی ۳۴۵ در سال ۲۰۲۰:
SELECT SUM(total)
FROM orders
WHERE created_at BETWEEN '2020-01-01 00:00:00' AND '2020-12-31 23:59:59'
AND user_id = 345
نکته: تعداد کاربران بسیار بیشتر از حداکثر تعداد سفارشهای یک کاربر است.
3- مجموع مبلغ سفارشها به ازای هر روز، بهترتیب صعودی تاریخ؛ نتیجه بهترتیب شامل ستون تاریخ و ستون مجموع مبلغ سفارشها باشد. تاریخ باید به فرمت Y-m-d باشد. همچنین، تاریخهایی بین تاریخهای موجود در جدول که در آنها سفارشی ثبت نشده است نیز باید در نتیجه موجود باشند. نام ستونهای خروجی اهمیت ندارد. نکته: هر کوئری نمرهای جداگانه دارد و اگر کوئری یک قسمت را نتوانستید بزنید، کوئریهایی که حل کردید را بفرستید و قسمت آن کوئری را خالی بگذارید.
آنچه باید آپلود کنید پس از طراحی کوئریها، کد خود را در قالب زیر در یک فایل با پسوند .sql آپلود کنید.