کد شما باید روی نسخهی استاندارد PostgreSQL قابل اجرا باشد.
علی پسر کنجکاوی است. او پس از این که دوری کارآموزیاش را گذرانده و در بله ماندگار شده، دلش میخواهد کمی اطلاعات از الگوهای رفتاری کاربران بهدست آورد.
تعدادی سؤال در ذهن علی پیش آمده و علی میخواهد به پاسخ این سؤالات برسد. به همین دلیل، باید تعدادی کوئری در دیتابیس اجرا کند. به علی کمک کنید تا به کنجکاویاش برسد :)
جزئیات پروژه
ساختار جداول بهصورت زیر است:
- اطلاعات کاربران (
users
):
نام ستون | نوع | تعریف | ملاحضات |
---|---|---|---|
id |
INTEGER |
شناسهی کاربر | PRIMARY KEY |
name |
VARCHAR(255) |
نام | |
nick |
VARCHAR(32) |
نام کاربری |
- وضعیت بلاک بودن کاربران توسط یکدیگر (
relations
):
نام ستون | نوع | تعریف | ملاحظات |
---|---|---|---|
from_user_id |
INTEGER |
شناسهی کاربری که میتواند بلاک کند | |
to_user_id |
INTEGER |
شناسهی کاربری که میتواند بلاک شود | |
blocked |
BOOLEAN |
وضعیت بلاک بودن کاربر | DEFAULT FALSE |
blocked_at |
TIMESTAMP |
زمان بلاک شدن کاربر | DEFAULT NULL |
- پیامها (
messages
):
نام ستون | نوع | تعریف | ملاحظات |
---|---|---|---|
id |
INTEGER |
شناسهی پیام | PRIMARY KEY |
from_user_id |
INTEGER |
شناسهی کاربر ارسالکنندهی پیام | |
to_user_id |
INTEGER |
شناسهی کاربر دریافتکنندهی پیام | |
body |
BYTEA |
متن پیام | |
created_at |
TIMESTAMP |
زمان ارسال شدن پیام | |
edited_at |
TIMESTAMP |
زمان آخرین ویرایش پیام (در صورت ویرایش شدن) | |
deleted_at |
TIMESTAMP |
زمان حذف پیام (در صورت حذف شدن) |
سؤالات ذهن آشفتهی علی بهشرح زیر هستند:
- شناسهی کاربرانی که نام کاربری (
nick
) آنها باam
شروع میشود بهترتیب صعودی - شناسهی کاربرانی که حداقل یک کاربر را بلاک کردهاند بهترتیب صعودی
- شناسهی پیامهایی که کاربران در چتهای خصوصی بلاکنشده ارسال کردهاند (یعنی در حال حاضر کاربر ارسالکننده، کاربر دریافتکننده را بلاک نکرده باشد) و قبل از حذف شدن ویرایش شدهاند بهترتیب صعودی (اگر شخص پس از ارسال پیام بلاک شده باشد، پیامها نباید در خروجی موجود باشند.)
نکته: نام ستون خروجی مهم نیست.
آنچه باید آپلود کنید
کوئریهای خود را در قالب زیر، در یک فایل با پسوند .sql
قرار داده و آن را ارسال کنید (فایل را زیپ نکنید).
-- Section1
your 1st query here
-- Section2
your 2nd query here
-- Section3
your 3rd query here
ارسال پاسخ برای این سؤال