اخیراً کوئرا فروشگاهی به نام کوئراشاپ تأسیس کرده و میخواهد دسترسی راحتی به اطلاعاتی که در پایگاهدادهی فروشگاه ذخیره شده، داشته باشد. بنابراین قصد داریم تعدادی کوئری برای دریافت این اطلاعات بنویسیم.
پروژهی اولیه
پروژهی اولیه را از این لینک دانلود کنید. ساختار فایلهای این پروژه بهصورت زیر است.
querashop_queries
├── store
│ ├── fixtures
│ │ └── store.json
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ └── __init__.py
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── > queries.py <
│ ├── tests.py
│ └── views.py
├── querashop_queries
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── tests
│ ├── __init__.py
│ └── tests_sample.py
├── manage.py
└── requirements.txt
پیشگفتار
پایگاهداده و مدلها از پیش طراحی شدهاند و جزئیات آن به صورت زیر است.
-
شرکت/Company
- نام (رشته)
- تلفن (رشته)
- ایمیل (رشته)
-
محصول/Product
- شرکت (کلید خارجی)
- نام (رشته)
- قیمت (عدد صحیح)
- تعداد (عدد صحیح)
- تخفیف (عدد صحیح)
- فروختهشده (عدد صحیح)
-
کارمند/Employee
- نام (رشته)
- نام خانوادگی (رشته)
- سن (عدد صحیح)
- شغل (رشته)
-
مشتری/Customer
- نام (رشته)
- تلفن (رشته)
- سطح (رشته)
-
سفارش/Order
- محصول (کلید خارجی)
- مشتری (کلید خارجی)
- زمان (تاریخ و زمان)
- قیمت (عدد صحیح)
جزئیات طراحی مدلها را در فایل models.py
در پروژهی اولیه مطالعه کنید.
اطلاعات کاربردی برای فروشگاه
۱. کوئریست کارمندان با سن کمتر از ۳۰ سال که شغل دادهشده را دارند
۲. لیست اسامی کالاهایی که قیمت آنها از میانگین قیمت تمام محصولات فروشگاه کمتر است (به ترتیب صعودی قیمت)
۳. کوئریست نام هر شرکت و تعداد کل محصولات فروختهشده (شامل تاپلهایی به صورت (name, sold)
)
۴. مجموع درآمد فروشگاه بین دو تاریخ دادهشده
۵. کوئریست نام و شمارهی موبایل مشتریان طلاییای که در یک ماه گذشته بیش از ۱۰ خرید داشتهاند (شامل تاپلهایی به صورت (name, phone)
)
۶. لیست نام تمام شرکتهایی که حداقل ۴ محصول آنها کمتر از ۱۰۰ عدد فروش داشته است
امکانات اضافه
درصورتیکه علاقمندید که خودتان به صورت دستی کوئریهای خود را امتحان کنید و از درستی آنها اطمینان حاصل کنید، یا اینکه به بررسی بیشتر از این مسئله بپردازید، برای راحتی بیشتر شما، فایلهای models.py
و مایگریشنها ساخته شدهاند و شما کافیست که قبل از شروع کار، جهت ایجاد پایگاهداده، یک بار دستور migrate
را اجرا کنید.
علاوهبر این، یک سری دادهی ازپیشآمادهشده، فراهم شده که بعد از اجرای دستور migrate
، میتوانید آنها را وارد پایگاهدادهی پروژهی خود کنید. به این منظور، دستور زیر را اجرا کنید. میتوانید از این دادهها به جهت تست کردن کوئریهای خود استفاده کنید.
۱. ایجاد پایگاهداده
python manage.py migrate
۲. وارد کردن دادههای ازپیشآمادهشده (fixture)
python manage.py loaddata store/fixtures/store.json
درصورتیکه علاقمند به تست نیستید، نیازی به ایجاد پایگاهداده و وارد کردن دادههای آزمایشی نیست، و تنها کافیست که در فایل queries.py
کوئریهای خود را بنویسید و از کوئرا جهت امتحان کردن درستی کوئریهایتان استفاده کنید.
نکات مهم
- شما تنها مجوز ایجاد تغییرات در فایل
queries.py
را دارید و تمامی تغییرات دیگر شما در فایلهای پروژه نادیده گرفته خواهند شد. توجه داشته باشید که تمامی بسترهای پروژه آماده شده و کافیست که شما تنها فایلqueries.py
را کامل کنید. - فراموش نکنید که میتوانید با مطالعهی فایلهای
models.py
با ساختار پایگاهداده، و با مطالعهیtest_sample.py
با روش تست کوئریها آشنا شوید.
نحوهی ارسال
این سؤال از نوع سوالات تکفایل است؛ برای ارسال جواب، فایل پایتونی را که در آن موارد خواستهشده قرار دارد را انتخاب و سپس ارسال نمایید.
ارسال پاسخ برای این سؤال