نیاز به حل تمامی سوالات مسابقه نیست و از هر قسمت هر مقدار که می‌توانید حل کنید. توجه داشته باشید که سوالات الگوریتمی و پیاده‌سازی به صورت صفر و یکی تصحیح می‌شوند و دیگر سوالات نمره خواهند گرفت. لطفا فرم زیر را پر کنید. https://quera.ir/general_form/QU9jHL/

دیتابیس، زمانبندی


شرکت "زمانبندان" قصد دارد سیستم ثبت زمانی را برای کارمندانش پیاده سازی کند از آنجایی که ثبت زمان کارمندان برای همه شرکت‌ها دغدغه مهم به حساب می‌آید این سیستم را به صورتی پیاده سازی کرده‌اند که تمامی شرکت‌ها بتوانند با ساختن یک اکانت از آن استفاده کنند. شمای دیتابیس به صورت زیر است.

erd دیتابیس

CREATE TABLE Employee (
  eid SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  ename VARCHAR (120) ,
  salary SMALLINT,
  age SMALLINT
);

CREATE TABLE Company (
  cid SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  cname VARCHAR (120) ,
  company_size SMALLINT ,
  adminid SMALLINT ,
  FOREIGN KEY (adminid) REFERENCES Employee(eid)
    ON DELETE CASCADE
    on UPDATE CASCADE
);

CREATE TABLE Team (
  tid SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  tname VARCHAR (120) ,
  team_size SMALLINT,
  cid SMALLINT,
  FOREIGN KEY (cid) REFERENCES Company(cid)
    ON DELETE CASCADE
    on UPDATE CASCADE
);

CREATE TABLE EmployeeTeam (
  tid SMALLINT ,
  eid SMALLINT ,
  perm VARCHAR (120),
  PRIMARY KEY (tid, eid),
  FOREIGN KEY (eid) REFERENCES Employee(eid)
    ON DELETE CASCADE
    on UPDATE CASCADE,
  FOREIGN KEY (tid) REFERENCES Team(tid)
    ON DELETE CASCADE
    on UPDATE CASCADE
);


CREATE TABLE Time (
  timeid SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  tid SMALLINT ,
  eid SMALLINT ,
  FOREIGN KEY (tid, eid) REFERENCES EmployeeTeam(tid, eid)
    ON DELETE CASCADE
    on UPDATE CASCADE,
  start_time SMALLINT,
  finish_time SMALLINT
);```

حال از شما خواسته شده است با توجه به مهارتتان دستوراتی برای `Mysql` پیاده سازی کنید که خواسته‌های زیر را برآورده کند.

+ شماره گروه‌هایی را بیابید که یک فردی در آن وجود دارد که در زمان ۱۰۰۰ تا ۱۲۰۰۰ فعال بوده باشد.
+ شماره ادمین هایی را بیابید که یک گروهی برای آنها وجود دارد که این گروه در  شرکتِ خودِ ادمین باشد.
+ اگر فردی در یک شرکت در بیش از یک گروه عضو باشد میگوییم شرکت فرد را در برگرفته است. نام افرادی را به صورت یکتا بیابید که سن بزرگتر از ۳۰ است و بیش از یک شرکت آنها را در برگرفته‌اند.

*توجه* : در قسمت اول شماره گروه‌ها در قسمت دوم شماره ادمین ‌ها و در قسمت سوم نام افراد را به صورت یکتا باید select کنید.

# روش پیاده‌سازی

در یک فایل  با نام `code.sql` کد خود را قرار دهید و آن را  فشرده (`zip` ) کنید و در سایت بارگذاری نمایید.
کد شما باید به صورت زیر باشد(نام فایل zip مهم نیست).
Plain text

-- Section1 your first query here -- Section2 your second query here -- Section3 your third query here ```

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.