در طول مسابقه، میتوانید سؤالات خود را از قسمت «سؤال بپرسید» مطرح کنید.
برای مشخص کردن رشتهها، از کاراکتر «'» استفاده کنید و نه «"».
کد شما باید روی MySQL قابل اجرا باشد. برای چک کردن سینتکس کد SQL خود میتوانید از این وبسایت کمک بگیرید.
در این سؤال، پایگاه دادهی یک شرکت فروش آنلاین که وظیفهی فروش محصولات از برندهای مختلف را دارد، در اختیار شما قرار گرفته است.
دادههای سؤال را از این لینک دانلود کنید.
ساختار جداول بهشرح زیر است:
جدول customers
: از این جدول برای نگهداری اطلاعات مشتریان استفاده میشود. ساختار این جدول بهصورت زیر است:
نام ستون | نوع | تعریف |
---|---|---|
customerNumber |
INT |
شناسهی مشتری |
customerName |
VARCHAR(50) |
نام مشتری |
contactLastName |
VARCHAR(50) |
نام مخاطب |
contactFirstName |
VARCHAR(50) |
فامیلی مخاطب |
phone |
VARCHAR(50) |
شماره تلفن مشتری |
addressLine1 |
VARCHAR(50) |
خط اول آدرس |
addressLine2 |
VARCHAR(50) |
خط دوم آدرس |
city |
VARCHAR(50) |
شهر |
state |
VARCHAR(50) |
ایالت |
postalCode |
VARCHAR(15) |
کد پستی |
country |
VARCHAR(50) |
کشور |
salesRepEmployeeNumber |
INT |
شماره کارمند فروش مربوطه |
creditLimit |
DECIMAL(10,2) |
محدودیت بودجه |
جدول employees
: از این جدول برای نگهداری اطلاعات کارمندان استفاده میشود. ساختار این جدول بهصورت زیر است:
نام ستون | نوع | تعریف |
---|---|---|
employeeNumber |
INT |
شناسهی کارمند |
lastName |
VARCHAR(50) |
فامیلی کارمند |
firstName |
VARCHAR(50) |
نام کارمند |
extension |
VARCHAR(10) |
اضافه |
email |
VARCHAR(100) |
ایمیل |
officeCode |
VARCHAR(10) |
کد دفتر |
reportsTo |
INT |
گزارش میدهد به کارمند |
jobTitle |
VARCHAR(50) |
شغل |
جدول offices
: از این جدول برای نگهداری اطلاعات دفترها استفاده میشود. ساختار این جدول بهصورت زیر است:
نام ستون | نوع | تعریف |
---|---|---|
officeCode |
VARCHAR(10) |
کد دفتر |
city |
VARCHAR(50) |
شهر |
phone |
VARCHAR(50) |
تلفن |
addressLine1 |
VARCHAR(50) |
خط اول آدرس |
addressLine2 |
VARCHAR(50) |
خط دوم آدرس |
state |
VARCHAR(50) |
ایالت |
country |
VARCHAR(50) |
کشور |
postalCode |
VARCHAR(15) |
کد پستی |
territory |
VARCHAR(10) |
منطقه |
جدول orderdetails
: از این جدول برای نگهداری جزئیات سفارشها استفاده میشود. ساختار این جدول بهصورت زیر است:
نام ستون | نوع | تعریف |
---|---|---|
orderNumber |
INT |
شناسهی سفارش |
productCode |
VARCHAR(15) |
شناسهی محصول |
quantityOrdered |
int |
تعداد سفارش |
priceEach |
DECIMAL(10,2) |
قیمت به ازای هر یک عدد محصول |
orderLineNumber |
SMALLINT |
شناسه خط تولید |
جدول orders
: از این جدول برای نگهداری سفارشها استفاده میشود. ساختار این جدول بهصورت زیر است:
نام ستون | نوع | تعریف |
---|---|---|
orderNumber |
INT |
شناسهی سفارش |
orderDate |
DATE |
تاریخ سفارش |
requiredDate |
DATE |
تاریخ نیاز |
shippedDate |
DATE |
تاریخ ارسال |
status |
VARCHAR(15) |
وضعیت ارسال |
comments |
TEXT |
نظرات ارسال |
customerNumber |
INT |
شناسه مشتری |
جدول payments
: از این جدول برای نگهداری جزئیات پرداختها استفاده میشود. ساختار این جدول بهصورت زیر است:
نام ستون | نوع | تعریف |
---|---|---|
customerNumber |
INT |
شناسهی مشتری |
checkNumber |
VARCHAR(15) |
شماره چک |
paymentDate |
DATE |
تاریخ پرداخت |
amount |
DECIMAL(10,2) |
امقدار پرداخت |
جدول productlines
: از این جدول برای نگهداری خط تولید ها استفاده میشود. ساختار این جدول بهصورت زیر است:
نام ستون | نوع | تعریف |
---|---|---|
productLine |
VARCHAR(15) |
شناسهی خط تولید |
textDescription |
VARCHAR(4000) |
توضیحات |
htmlDescription |
MEDIUMTEXT |
لینک توضیحات |
image |
MEDIUMBLOB |
عکس |
جدول products
: از این جدول برای نگهداری اطلاعات محصولات استفاده میشود. ساختار این جدول بهصورت زیر است:
نام ستون | نوع | تعریف |
---|---|---|
productCode |
VARCHAR(15) |
شناسهی محصول |
productName |
VARCHAR(70) |
نام محصول |
productLine |
VARCHAR(50) |
شناسه خط تولید |
productScale |
VARCHAR(10) |
اسکیل محصول |
productVendor |
VARCHAR(50) |
برند محصول |
productDescription |
TEXT |
توضیحات محصول |
quantityInStock |
SMALLINT |
تعداد موجود |
buyPrice |
DECIMAL(10,2) |
قیمت خرید |
MSRP |
DECIMAL(10,2) |
قیمت فروش |
کوئریهای زیر را طوری بنویسید که خروجی خواستهشده بهدست بیاید:
employeeNumber
و اسم و فامیل کارمندان را با یک space به هم بچسبانید و در یک ستون با نام Name
و تعداد مشتریهای آن کارمند را در یک ستون با نام CustomersCount
قرار دهید و به ترتیب نزولی بر اساس تعداد مشتریان مرتب کنید. اگر تعداد مشتریان دو کارمند یکسان بود، آن سطرها را بهترتیب صعودی شناسهی کارمند مرتب کنید.customerNumber
برگردانید. تضمین میشود که مجموع مبالغ سفارشهای این مشتریان با یکدیگر متفاوت است.productline
شناسه خط تولید بیاید و در ستون دوم، نام کالا در ستونی با نام productName
بیاید و در ستون سوم (با نام net_profit
) سود خالصی که کالا میدهد یعنی «قیمت فروش منهای قیمت خرید»، تعداد موجود در انبار را در ستونی با نام quantityInStock
بریزید و در ستون آخر با نام net_profit_rank
، رتبهی هر محصول بر اساس ارزشش در هر خط تولید را بریزید. رتبهی محصولات به گونهای باشد که محصولی که ارزشش بیشتر است، عدد رتبهاش کمتر باشد. تضمین میشود که سود خالص محصولات با یکدیگر متفاوت است. سطرهای خروجی باید بهترتیب صعودی شناسهی محصول باشند.نکته: برای بخش سوم دقت کنید که حتما productline
ها در هر دو جدول productline
و products
موجود باشد.
کد خود را در حتما در قالب زیر، در یک فایل با پسوند .sql
قرار دهید و بدون زیپ کردن، آن را ارسال کنید: