**کد شما باید روی PostgreSQL قابل اجرا باشد.**
----------
در این سوال، بخشی از پایگاه داده مربوط به مسابقات فوتبال اروپا در اختیار شما قرار گرفته است.
# جزئیات پایگاهداده
دادههای اولیه برای **تست نهایی** را از [این لینک](/problemset/assignments/4367/download_problem_initial_project/237892/) دانلود کنید.
<details class="yellow">
<summary>
**توضیحات در مورد دادههای اولیه**
</summary>
در فایل `football.zip` فایلی به اسم `initial.sql` وجود دارد.
ابتدا پایگاهدادهای با نام `football` در سیستم خود را بسازید و با اجرای این فایل برروی این پایگاهداده، همه جداول و سطرهایی که برای **تست نهایی** مورد استفاده قرار میگیرد در سیستم شما ایجاد میشود.
</details>
<details class="grey">
<summary>
**توضیحات جداول دیتابیس**
</summary>
ساختار جداول بهشرح زیر است:
**جدول `players`**: از این جدول برای نگهداری اطلاعات بازیکنها استفاده میشود. ساختار این جدول بهصورت زیر است:
|نام ستون|نوع|تعریف|
|:-------:|:---:|:----:|
|`player_id`|`integer`|شناسهی بازیکن|
|`current_club_id`|`integer`|شناسهی باشگاه فعلی بازیکن|
|`player_code`|`character varying(64)`|کد بازیکن (نام کامل بازیکن)|
|`country_of_birth`|`character varying(32)`|کشور تولد بازیکن|
|`city_of_birth`|`character varying(64)`|شهر تولد بازیکن|
|`country_of_citizenship`|`character varying(32)`|کشور ملیت بازیکن|
|`date_of_birth`|`date`|تاریخ تولد بازیکن|
|`sub_position`|`character varying(32)`|تخصص دوم بازیکن|
|`position`|`character varying(16)`|تخصص اول بازیکن|
|`foot`|`character varying(8)`|پای تخصصی بازیکن|
|`height_in_cm`|`integer`|قد بازی کن به سانتی متر|
|`contract_expiration_date`|`date`|تاریخ انقضای قرارداد بازیکن|
**جدول `clubs`**: از این جدول برای نگهداری اطلاعات باشگاهها استفاده میشود. ساختار این جدول بهصورت زیر است:
|نام ستون|نوع|تعریف|
|:-------:|:--:|:----:|
|`club_id`|`integer`|شناسهی باشگاه|
|`name`|`character varying(64)`|نام باشگاه|
|`domestic_competition_id`|`character varying(4)`|لیگ باشگاه|
|`squad_size`|`integer`|اندازه تیم|
|`foreigners_number`|`integer`|تعداد افراد خارجی تیم|
|`national_team_players`|`integer`|تعداد بازیکنهای تیم ملی|
|`stadium_name`|`character varying(64)`|نام استادیوم اختصاصی باشگاه|
|`stadium_seats`|`integer`|کشور ملیت بازیکن|
|`net_transfer_record`|`character varying(16)`|ارزش خالص باشگاه|
**جدول `competitions`**: از این جدول برای نگهداری اطلاعات مسابقات استفاده میشود. ساختار این جدول بهصورت زیر است:
|نام ستون|نوع|تعریف|
|:-------:|:--:|:----:|
|`competition_id`|`character varying(4)`|شناسه مسابقات|
|`name`|`character varying(64)`|نام مسابقات|
|`type`|`character varying(32)`| نوع مسابقات |
|`country_name`|`character varying(16)`|کشور مسابقات|
**جدول `games`**: از این جدول برای نگهداری اطلاعات بازیها استفاده میشود. ساختار این جدول بهصورت زیر است:
|نام ستون|نوع|تعریف|
|:-------:|:--:|:----:|
|`game_id`|`integer`|شناسهی بازی|
|`competition_id`|`character varying(4)`|شناسه سری مسابقات|
|`season`|`integer`|فصل برگذاری بازی|
|`date`|`date`|تاریخ بازی|
|`home_club_id`|`integer`|شناسهی تیم (باشگاه) میزبان|
|`away_club_id`|`integer`|شناسهی تیم مهمان|
|`home_club_goals`|`integer`|اتعداد گل تیم میزبان|
|`away_club_goals`|`integer`|تعداد گل تیم مهمان|
|`stadium`|`character varying(64)`|نام استادیوم بازی|
|`attendance`|`integer`|تعداد تماشاگرها|
**جدول `apearances`**: از این جدول برای نگهداری اطلاعات حضور بازیکنها در بازی استفاده میشود. ساختار این جدول بهصورت زیر است:
|نام ستون|نوع|تعریف|
|:-------:|:--:|:----:|
|`appearance_id`|`character varying(16)`|شناسهی جدول|
|`game_id`|`integer`|شناسهی بازی|
|`player_id`|`integer`|شناسهی بازیکن|
|`yellow_cards`|`integer`|تعداد کارت زردهای بازیکن|
|`red_cards`|`integer`|تعداد کارت قرمزهای بازیکن|
|`goals`|`integer`|تعداد گلهای بازیکن |
|`assists`|`integer`|تعداد پاس گلهای بازیکن|
|`minutes_played`|`integer`|تعداد دقایقی که بازیکن بازی کردهاست|
**جدول `game_events`**: از این جدول برای نگهداری اطلاعات اتفاقهای مسابقه (گل، موقیت گل، پنالتی و ...)استفاده میشود. ساختار این جدول بهصورت زیر است:
|نام ستون|نوع|تعریف|
|:-------:|:--:|:----:|
|`game_event_id`|`integer`|شناسهی جدول|
|`game_id`|`integer`|شناسهی بازی|
|`minute`|`integer`|زمان(دقیقه) اتفاق|
|`type`|`character varying(16)`|نوع اتفاق|
|`player_id`|`integer`|شناسهی بازیکن اصلی اتفاق|
|`player_in_id`|`integer`|شناسهی بازیکن که از گل جلوگیری کرده است|
|`player_assist_id`|`integer`|شناسهی بازیکنی که پاس گل داده است|
</details>
# مطلوبات
۱. لیستی از ارزش خالص باشگاه را به صورت عددی (`integer`).
<details class="blue">
<summary>
*توضیحات مربوط به کوئری اول*
</summary>
نام باشگاه را در ستونی با نام `name` و ارزش خالص هر باشگاه را در ستونی با نام `total` نمایش دهید. توجه کنید خروجی شما باید به ترتیب **نزولی** بر حسب ارزش خالص باشگاه و در صورت که این مقدار برابر بود بر اساس نام باشگاه بهصورت **صعودی** مرتب شود.
<details class="red">
<summary>
*توجه*
</summary>
دقت داشتهباشید در صورتی که ارزش خالص تیم مقدار `+-0` داشت آن را به صورت `0` نمایش دهید. همچنین نماد `k` معادل هزار و نماد `m` معادل میلیون میباشد.
</details>
3 سطر اول خروجی شما باید به شکل زیر باشد.
| name | total |
| :---: | :---: |
| Villarreal Club de Fútbol S.A.D. | 99400000 |
| Brighton and Hove Albion Football Club | 86400000 |
| Verona Hellas Football Club | 84300000 |
</details>
۲. مجموع تعداد کارتهای زرد و قرمز هر بازیکن در هر سری مسابقات را نمایش دهید.
<details class="blue">
<summary>
*توضیحات مربوط به کوئری دوم*
</summary>
نام یا همان کد بازیکن را در ستونی به نام `player_name` و نام سری مسابقات را در ستونی با نام `competition_name` ،تعداد کارت زردهای بازیکن در آن سری مسابقات را در ستونی با نام `total_yellow_cards` و تعداد کارت زردهای بازیکن در آن سری مسابقات را در ستونی با نام `total_red_cards` قرار دهید. ستونها را ابتدا برحسب نام بازیکن بهصورت **صعودی** , سپس برحسب تعداد کارتهای زرد و سپس قرمز، بهصورت **نزولی** و در نهایت براساس نام سری مسابقات بهصورت **صعودی** مرتب کنید.
<details class="red">
<summary>
**توجه**
</summary>
هنگامی که مجموع کارتهای زرد و مجموع کارتهای زرد قرمز در سری مسابقاتی برای بازیکنی صفر باشد (بازیکن هیچ کارتی دریافت نکرده باشد)، را نمایش ندهید.
</details>
3 سطر اول خروجی شما باید به شکل زیر باشد.
| player_name | competition_name |total_yellow_cards|total_red_cards|
| :---: | :---: |:---:|:---:|
| aaron-appindangoye| super-lig | 6 | 0|
| aaron-appindangoye | europa-league | 1 | 0 |
| aaron-boupendza | super-lig | 7 | 0 |
</details>
۳. سری مسابقات را بر حسب مجموع تعداد اتفاقهای آن (تعداد گلها، موقیتهای گل، کارتها و ... ) رتبه بندی کنید.
<details class="blue">
<summary>
*توضیحات مربوط به کوئری سوم*
</summary>
رتبه سری مسابقات بر اساس مجموع تعداد اتفاقهای آن (پر حادثهترین رتبه اول) را در ستونی با نام `ranking` و نام سری مسابقات را در ستونی با نام `name` و تعداد اتفاقهای در آن سری مسابقات را در ستونی با نام `events` قرار دهید. ستونها را ابتدا برحسب رتبه، سپس براساس نام سری مسابقات بهصورت **صعودی** مرتب کنید.
<details class="red">
<summary>
*توجه*
</summary>
اگر رتبه دو سری مسابقات با بیشترین تعداد حوادث، یکسان بود، هردو رتبه یک میشوند و سری مسابقات بعدی رتبهاش دو میشود، این قانون برای تمامی رتبهها صادق است.
</details>
3 سطر **آخر** خروجی شما باید به شکل زیر باشد.
|ranking | name |events|
| :---: | :---: |:---:|
|39 | johan-cruijff-schaal | 47 |
|40 | trophee-des-champions | 45 |
|41 | ukrainian-super-cup | 33 |
</details>
۴.لیستی از بازییها، استادیوم آن بازی و بازیکنهایی که هنگام مسابقه حداقل 35 سال داشتهاند به همراه تعداد گلهای زده شده توسط آن بازیکن و سن وی در آن بازی.
<details class="blue">
<summary>
*توضیحات مربوط به کوئری چهارم*
</summary>
نام یا همان کد بازیکن را در ستونی به نام `player_code`, شناسه بازی را در ستونی با نام `game_id`, استادیومی که بازی در آن انجام شده را در ستونی به نام `stadium`، سن بازیکن را در آن مسابقه را در ستونی با نام `age_at` و تعداد گلهای زده شده توسط بازیکن در آن بازی را در ستونی به نام `total_goals` قرار دهید. ستونها را ابتدا برحسب نام بازیکن بهصورت **صعودی** , سپس برحسب سن بازیکن در آن بازی بهصورت **نزولی** و سپس برحسب تعداد گل بهصورت **نزولی**, سپس براساس نام سری استادیوم و درنهایت براساس شناسه بازی بهصورت **صعودی** مرتب کنید.
<details class="red">
<summary>
*توجه*
</summary>
فقط بازیکنهایی را که حداقل یک گل در این بازیها زدهاند، نمایش دهید.
</details>
|player_code | game_id |stadium|age_at|total_goals
| :---: | :---: |:---:|:---:|:---:|
|adam-le-fondre|4121036|Easter Road Stadium|37|1
|adam-le-fondre|4120961|Global Energy Stadium|37|1|
|adam-le-fondre|4120853|Easter Road Stadium|36|1|
</details>
# روش پیادهسازی
در یک فایل با نام `code.sql` کد خود را قرار دهید و آن را فشرده (`zip` ) کنید و در سایت بارگذاری نمایید.
کد شما باید به صورت زیر باشد(نام فایل zip مهم نیست).
```sql
-- Section1
Your first query here
-- Section2
Your second query here
-- Section3
Your third query here
-- Section4
Your fourth query here
```