لینک‌های مفید برای شرکت در مسابقه:

در طول مسابقه، می‌توانید سوال‌های خود را از قسمت «سؤال بپرسید» مطرح کنید.

علی کنجکاو - دیتابیس


کد شما باید روی نسخه‌ی استاندارد PostgreSQL قابل اجرا باشد.


علی پسر کنجکاوی است. او پس از این که دور‌ی کارآموزی‌اش را گذرانده و در بله ماندگار شده، دلش می‌خواهد کمی اطلاعات از الگوهای رفتاری کاربران به‌دست آورد.

تعدادی سؤال در ذهن علی پیش آمده و علی می‌خواهد به پاسخ این سؤالات برسد. به همین دلیل، باید تعدادی کوئری در دیتابیس اجرا کند. به علی کمک کنید تا به کنجکاوی‌اش برسد :)

جزئیات پروژه🔗

ساختار جداول به‌صورت زیر است:

  1. اطلاعات کاربران (users):
نام ستون نوع تعریف ملاحضات
id INTEGER شناسه‌ی کاربر PRIMARY KEY
name VARCHAR(255) نام
nick VARCHAR(32) نام کاربری
  1. وضعیت بلاک بودن کاربران توسط یکدیگر (relations):
نام ستون نوع تعریف ملاحظات
from_user_id INTEGER شناسه‌ی کاربری که می‌تواند بلاک کند
to_user_id INTEGER شناسه‌ی کاربری که می‌تواند بلاک شود
blocked BOOLEAN وضعیت بلاک بودن کاربر DEFAULT FALSE
blocked_at TIMESTAMP زمان بلاک شدن کاربر DEFAULT NULL
  1. پیام‌ها (messages):
نام ستون نوع تعریف ملاحظات
id INTEGER شناسه‌ی پیام PRIMARY KEY
from_user_id INTEGER شناسه‌ی کاربر ارسال‌کننده‌ی پیام
to_user_id INTEGER شناسه‌ی کاربر دریافت‌کننده‌ی پیام
body BYTEA متن پیام
created_at TIMESTAMP زمان ارسال شدن پیام
edited_at TIMESTAMP زمان آخرین ویرایش پیام (در صورت ویرایش شدن)
deleted_at TIMESTAMP زمان حذف پیام (در صورت حذف شدن)

سؤالات ذهن آشفته‌ی علی به‌شرح زیر هستند:

  1. شناسه‌ی کاربرانی که نام کاربری (nick) آن‌ها با am شروع می‌شود به‌ترتیب صعودی
  2. شناسه‌ی کاربرانی که حداقل یک کاربر را بلاک کرده‌اند به‌ترتیب صعودی
  3. شناسه‌ی پیام‌هایی که کاربران در چت‌های خصوصی بلاک‌نشده ارسال کرده‌اند (یعنی در حال حاضر کاربر ارسال‌کننده، کاربر دریافت‌کننده را بلاک نکرده باشد) و قبل از حذف شدن ویرایش شده‌اند به‌ترتیب صعودی (اگر شخص پس از ارسال پیام بلاک شده باشد، پیام‌ها نباید در خروجی موجود باشند.)

نکته: نام ستون خروجی مهم نیست.

آن‌چه باید آپلود کنید🔗

کوئری‌های خود را در قالب زیر، در یک فایل با پسوند .sql قرار داده و آن را ارسال کنید (فایل را زیپ نکنید).

-- Section1
   your 1st query here
-- Section2
   your 2nd query here
-- Section3
   your 3rd query here
SQL
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.