کد شما باید روی PostgreSQL قابل اجرا باشد.
دیتابیسی که در این سوال به آن میپردازیم، متشکل از اطلاعات تعدادی کاربر، شرکت و محصولات شرکتها خواهد بود.
دادههای اولیه را از این لینک دانلود کنید.
از نصب بودن PostgreSQL روی سیستم خود اطمینان حاصل کنید.
برای ایمپورت کردن دادههای اولیه میتوانید از یکی از دو روش زیر اقدام کنید:
۱- با استفاده CLI دستور زیر را وارد کنید تا دادههای اولیه ایمپورت شوند:
که در این دستور مسیر فایل initial.sql
را به صورت مطلق یا نسبی میتوانید آدرسدهی کنید.
۲- اگر GUI را ترجیح میدهید، پس از نصب دیتاگریپ و اتصال به PostgreSQL با یوزر postgres
، باید روی دیتاسورس و کانکشن postgres
راستکلیک کنید و از منوی SQL Scripts
، گزینهی Run SQL Script
را انتخاب کنید. سپس فایل initial.sql
را پیدا و تایید کنید. در انتها روی Run
کلیک کنید تا اسکریپت اجرا شود و دادهها وارد دیتابیس شوند.
address
(آدرسها)🔗این جدول اطلاعات مربوط به آدرسها را ذخیره میکند.
نام ستون | نوع داده | توضیحات |
---|---|---|
id |
integer |
شناسهی یکتا برای آدرس (کلید اصلی) |
city |
varchar(100) |
شهر |
country |
varchar(100) |
کشور |
country_code |
varchar(100) |
کد کشور |
zip_code |
integer |
کد پستی |
company
(شرکتها)🔗این جدول اطلاعات مربوط به شرکتها را ذخیره میکند.
نام ستون | نوع داده | توضیحات |
---|---|---|
id |
integer |
شناسهی یکتا برای شرکت (کلید اصلی) |
name |
varchar(100) |
نام شرکت |
address_id |
bigint |
شناسهی آدرس مرتبط (کلید خارجی به جدول address ) |
product
(محصولات)🔗این جدول اطلاعات مربوط به محصولات را ذخیره میکند.
نام ستون | نوع داده | توضیحات |
---|---|---|
id |
integer |
شناسهی یکتا برای محصول (کلید اصلی) |
name |
varchar(100) |
نام محصول |
category |
varchar(100) |
دستهبندی محصول |
price |
integer |
قیمت محصول |
product_company
(شرکت-محصول)🔗این جدول یک رابطهی چند به چند بین شرکتها و محصولات ایجاد میکند.
نام ستون | نوع داده | توضیحات |
---|---|---|
id |
integer |
شناسهی یکتا برای رابطه (کلید اصلی) |
company_id |
bigint |
شناسهی شرکت (کلید خارجی به جدول company ) |
product_id |
bigint |
شناسهی محصول (کلید خارجی به جدول product ) |
user
(کاربران)🔗این جدول اطلاعات مربوط به کاربران را ذخیره میکند.
نام ستون | نوع داده | توضیحات |
---|---|---|
id |
integer |
شناسهی یکتا برای کاربر (کلید اصلی) |
first_name |
text |
نام کاربر |
last_name |
text |
نام خانوادگی کاربر |
email |
text |
ایمیل کاربر |
address_id |
integer |
شناسهی آدرس مرتبط (کلید خارجی به جدول address ) |
company_id |
integer |
شناسهی شرکت مرتبط (کلید خارجی به جدول company ) |
username |
text |
نام کاربری |
این جداول دارای روابطی هستند که به کمک کلیدهای خارجی بین جداول ایجاد شدهاند. برای مثال، هر شرکت میتواند یک آدرس داشته باشد و هر کاربر نیز میتواند یک شرکت و یک آدرس داشته باشد.
کوئریهایی بنویسید که خروجیهای مطلوب زیر را بهدست آورد (توجه کنید که هر کوئری نمرهای جداگانه دارد و اگر کوئری قسمتی را نتوانستید بنویسید، کوئریهایی که حل کردید را بفرستید و کوئری آن قسمت را خالی بگذارید):
first_name
) آنها با حرف s و فامیلی (last_name
) آنها با حرف e تمام میشود. کوچک یا بزرگ بودن حروف مهم نیست و رکوردها باید براساس آیدی به صورت صعودی مرتب شوند.ساختار نتیجهی کوئری و سطر اول آن، به شکل زیر است:
id | first_name | last_name | username |
---|---|---|---|
6916 | Sarah | George | patrick32 |
ساختار نتیجهی کوئری و سطر اول آن، به شکل زیر است:
company_name | product_list |
---|---|
Movies | {Hair Care Component,Fitness Equipment,Home Improvement Rig,Truck Item,Furniture Whatchamacallit,Music Widget,Party Gear,Mens Device,Aquarium Instrument,Movie Paraphernalia,Camera Attachment,Skin Care Implement,Makeup Gadget,Party Gadget,Personal Implement,Swimming Rig,Gardening Mechanism,Nutrition Component,Book Machine,Party Mechanism} |
user_address
به صورت روبرو است: Country, City, Zip Code
ساختار نتیجهی کوئری و سه سطر اول خروجی به شکل زیر است:
username | user_address |
---|---|
markbaker | Moenstead, Palestine, 4972 |
garciaamy | Murphyton, French Guiana, 5765 |
jonesandrea | Bauchland, Panama, 8125 |
expensive
و اگر قیمت آن از میانگین کل محصولات کمتر بود not expensive
قرار میگیرد.سه سطر ابتدایی خروجی به شکل زیر خواهد بود:
product_name | product_price | product_category | company_name | company_city | price_comparison |
---|---|---|---|---|---|
Bedding Attachment | 14 | Home | Shoes | Corkeryland | not expensive |
Dining Contraption | 112 | Home | Grocery | Hartford | expensive |
Truck Kit | 27 | Automotive | Tools | North Burley | not expensive |
پس از پیادهسازی کوئریها، آن را در فایل queries.sql
، وارد کرده و سپس این فایل را آپلود کنید. کد شما باید به صورت زیر
باشد: