{"id":18303468,"url":"https://github.com/yawkar/hse-postgresql-lab-2","last_synced_at":"2025-04-09T10:17:54.223Z","repository":{"id":138620895,"uuid":"561667138","full_name":"YawKar/hse-postgresql-lab-2","owner":"YawKar","description":"(Student Lab Project) Ordinary laboratory work","archived":false,"fork":false,"pushed_at":"2022-11-04T16:06:17.000Z","size":35,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-15T04:26:32.292Z","etag":null,"topics":["postgresql","sql"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YawKar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-04T08:00:54.000Z","updated_at":"2022-11-04T16:07:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"1cdf3ee4-9905-47cd-b22e-79e69efab428","html_url":"https://github.com/YawKar/hse-postgresql-lab-2","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YawKar%2Fhse-postgresql-lab-2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YawKar%2Fhse-postgresql-lab-2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YawKar%2Fhse-postgresql-lab-2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YawKar%2Fhse-postgresql-lab-2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YawKar","download_url":"https://codeload.github.com/YawKar/hse-postgresql-lab-2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248018097,"owners_count":21034052,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["postgresql","sql"],"created_at":"2024-11-05T15:25:45.508Z","updated_at":"2025-04-09T10:17:54.187Z","avatar_url":"https://github.com/YawKar.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- TOC --\u003e\n# Контент\n* [Решение](#Решение)\n  * [Задание 1](#Задание-1)\n  * [Задание 2](#Задание-2)\n  * [Задание 3](#Задание-3)\n  * [Задание 4](#Задание-4)\n  * [Задание 5](#Задание-5)\n  * [Задание 6](#Задание-6)\n  * [Задание 7](#Задание-7)\n  * [Задание 8](#Задание-8)\n  * [Задание 9](#Задание-9)\n  * [Задание 10](#Задание-10)\n  * [Задание 11](#Задание-11)\n  * [Задание 12](#Задание-12)\n  * [Задание 13](#Задание-13)\n  * [Задание 14](#Задание-14)\n  * [Задание 15](#Задание-15)\n\u003c!-- TOC --\u003e\n\n# Решение\n## Задание 1\n[К таблице контента](#Контент)\n#### SQL:\n```sql\nCREATE TABLE Наниматель (\nИдентификатор        BIGINT          PRIMARY KEY,\nНазвание             VARCHAR(60)     NOT NULL,\nМесто_расположения   VARCHAR(60)     NOT NULL,\nЛьгота_процент       DECIMAL(4, 2)   NOT NULL    CHECK(Льгота_процент BETWEEN 0 AND 100)\n);\nCREATE TABLE Бюро_найма (\nИдентификатор        BIGINT          PRIMARY KEY,\nНомер                VARCHAR(60)     NOT NULL,\nАдрес_конторы        VARCHAR(60)     NOT NULL,\nПлата_процент        DECIMAL(4, 2)   NOT NULL    CHECK(Плата_процент BETWEEN 0 AND 100)\n);\nCREATE TABLE Профессии (\nИдентификатор        BIGINT          PRIMARY KEY,\nНазвание             VARCHAR(60)     NOT NULL,\nСтоимость_найма_руб  INT             NOT NULL    CHECK(Стоимость_найма_руб \u003e 0),\nКоличество           INT             NOT NULL    CHECK(Количество \u003e= 0),\nПрежнее_место_работы VARCHAR(60)\n);\nCREATE TABLE Трудовой_договор (\nНомер_договора       BIGINT          PRIMARY KEY,\nДата                 DATE            NOT NULL,\nНаниматель           BIGINT          NOT NULL     REFERENCES Наниматель (Идентификатор),\nБюро_найма           BIGINT          NOT NULL     REFERENCES Бюро_найма (Идентификатор),\nПрофессия            BIGINT          NOT NULL     REFERENCES Профессии (Идентификатор),\nКоличество_вакансий  INT             NOT NULL     CHECK(Количество_вакансий \u003e= 0),\nОплата               INT             NOT NULL     CHECK(Оплата \u003e 0)\n);\n```\n#### Вывод:\nЗадание без вывода\n\n## Задание 2\n[К таблице контента](#Контент)\n#### SQL:\n```sql\nINSERT INTO \"Наниматель\" (\"Идентификатор\", \"Название\", \"Место_расположения\", \"Льгота_процент\")\nVALUES (1, 'Рога и копыта',            'Приморск',   0),\n       (2, 'ГАЗ',                      'Н.Новгород', 20),\n       (3, 'Станкостроительный завод', 'Одесса',     2),\n       (4, 'КИНАП',                    'Одесса',     2),\n       (5, 'КРАЗ',                     'Кременчуг',  2),\n       (6, 'п\\я 12687-у',              'Саранск',    10);\nINSERT INTO \"Бюро_найма\" (\"Идентификатор\", \"Номер\", \"Адрес_конторы\", \"Плата_процент\")\nVALUES (1, 'N5',  'Н.Новгород', 4),\n       (2, 'N4',  'Москва',     3),\n       (3, 'N12', 'Киев',       11),\n       (4, 'N6',  'Н.Новгород', 3),\n       (5, 'N8',  'Одесса',     9);\nINSERT INTO \"Профессии\" (\"Идентификатор\", \"Название\", \"Стоимость_найма_руб\", \"Количество\", \"Прежнее_место_работы\")\nVALUES (1, 'Кровельщик',   10000, 7,  'Саранск'),\n       (2, 'Слесарь',      15000, 6,  'Кременчуг'),\n       (3, 'Счетовод',     25000, 10, 'Москва'),\n       (4, 'Фрезеровщик',  20000, 7,  'Одесса'),\n       (5, 'Программист',  40000, 8,  'Киев'),\n       (6, 'Автоводитель', 25000, 3,  'Приморск'),\n       (7, 'Шлифовальщик', 17000, 5,  'Одесса');\nINSERT INTO \"Трудовой_договор\" (\"Номер_договора\", \"Дата\", \"Наниматель\", \"Бюро_найма\", \"Профессия\", \"Количество_вакансий\", \"Оплата\")\nVALUES (127, '2020-01-01', 3, 4, 6, 1, 25000),\n       (128, '2020-02-01', 6, 2, 1, 2, 20000),\n       (129, '2020-03-01', 1, 3, 4, 1, 20000),\n       (130, '2020-04-01', 2, 1, 7, 2, 34000),\n       (131, '2020-04-01', 4, 4, 6, 1, 25000),\n       (132, '2020-04-01', 6, 4, 1, 1, 10000),\n       (133, '2020-05-01', 5, 2, 5, 3, 120000),\n       (134, '2020-05-01', 3, 3, 2, 3, 45000),\n       (135, '2020-05-01', 3, 4, 1, 1, 10000),\n       (136, '2020-06-01', 4, 1, 3, 4, 100000),\n       (137, '2020-06-01', 1, 2, 2, 3, 45000),\n       (138, '2020-06-01', 1, 3, 7, 1, 17000),\n       (139, '2020-06-01', 5, 4, 1, 2, 20000),\n       (140, '2020-06-01', 3, 5, 2, 1, 15000),\n       (141, '2020-06-01', 3, 5, 2, 1, 15000),\n       (142, '2020-07-01', 4, 2, 6, 1, 25000),\n       (143, '2020-08-01', 2, 2, 7, 2, 34000);\n```\n#### Вывод:\nЗадание без вывода\n\n## Задание 3\n[К таблице контента](#Контент)\n#### SQL:\n```sql\nSELECT * FROM \"Наниматель\";\nSELECT * FROM \"Бюро_найма\";\nSELECT * FROM \"Профессии\";\nSELECT * FROM \"Трудовой_договор\";\n```\n#### Вывод:\n| Идентификатор | Название                 | Место\\_расположения | Льгота\\_процент |\n|:--------------|:-------------------------|:--------------------|:----------------|\n| 1             | Рога и копыта            | Приморск            | 0.00            |\n| 2             | ГАЗ                      | Н.Новгород          | 20.00           |\n| 3             | Станкостроительный завод | Одесса              | 2.00            |\n| 4             | КИНАП                    | Одесса              | 2.00            |\n| 5             | КРАЗ                     | Кременчуг           | 2.00            |\n| 6             | п\\\\я 12687-у             | Саранск             | 10.00           |\n\n| Идентификатор | Номер | Адрес\\_конторы | Плата\\_процент |\n|:--------------|:------|:---------------|:---------------|\n| 1             | N5    | Н.Новгород     | 4.00           |\n| 2             | N4    | Москва         | 3.00           |\n| 3             | N12   | Киев           | 11.00          |\n| 4             | N6    | Н.Новгород     | 3.00           |\n| 5             | N8    | Одесса         | 9.00           |\n\n| Идентификатор | Название     | Стоимость\\_найма\\_руб | Количество | Прежнее\\_место\\_работы |\n|:--------------|:-------------|:----------------------|:-----------|:-----------------------|\n| 1             | Кровельщик   | 10000                 | 7          | Саранск                |\n| 2             | Слесарь      | 15000                 | 6          | Кременчуг              |\n| 3             | Счетовод     | 25000                 | 10         | Москва                 |\n| 4             | Фрезеровщик  | 20000                 | 7          | Одесса                 |\n| 5             | Программист  | 40000                 | 8          | Киев                   |\n| 6             | Автоводитель | 25000                 | 3          | Приморск               |\n| 7             | Шлифовальщик | 17000                 | 5          | Одесса                 |\n\n| Номер\\_договора | Дата       | Наниматель | Бюро\\_найма | Профессия | Количество\\_вакансий | Оплата |\n|:----------------|:-----------|:-----------|:------------|:----------|:---------------------|:-------|\n| 127             | 2020-01-01 | 3          | 4           | 6         | 1                    | 25000  |\n| 128             | 2020-02-01 | 6          | 2           | 1         | 2                    | 20000  |\n| 129             | 2020-03-01 | 1          | 3           | 4         | 1                    | 20000  |\n| 130             | 2020-04-01 | 2          | 1           | 7         | 2                    | 34000  |\n| 131             | 2020-04-01 | 4          | 4           | 6         | 1                    | 25000  |\n| 132             | 2020-04-01 | 6          | 4           | 1         | 1                    | 10000  |\n| 133             | 2020-05-01 | 5          | 2           | 5         | 3                    | 120000 |\n| 134             | 2020-05-01 | 3          | 3           | 2         | 3                    | 45000  |\n| 135             | 2020-05-01 | 3          | 4           | 1         | 1                    | 10000  |\n| 136             | 2020-06-01 | 4          | 1           | 3         | 4                    | 100000 |\n| 137             | 2020-06-01 | 1          | 2           | 2         | 3                    | 45000  |\n| 138             | 2020-06-01 | 1          | 3           | 7         | 1                    | 17000  |\n| 139             | 2020-06-01 | 5          | 4           | 1         | 2                    | 20000  |\n| 140             | 2020-06-01 | 3          | 5           | 2         | 1                    | 15000  |\n| 141             | 2020-06-01 | 3          | 5           | 2         | 1                    | 15000  |\n| 142             | 2020-07-01 | 4          | 2           | 6         | 1                    | 25000  |\n| 143             | 2020-08-01 | 2          | 2           | 7         | 2                    | 34000  |\n\n\n## Задание 4\n[К таблице контента](#Контент)\n#### SQL:\n```sql\n-- a.)\nSELECT \"Название\", \"Место_расположения\"\nFROM \"Наниматель\";\n\n-- b.)\nSELECT \"Номер\"\nFROM \"Бюро_найма\";\n\n-- c.)\nSELECT \"Название\", SUM(\"Количество\")\nFROM \"Профессии\"\nGROUP BY \"Название\";\n```\n#### Вывод:\na.)\n\n| Название                 | Место\\_расположения |\n|:-------------------------|:--------------------|\n| Рога и копыта            | Приморск            |\n| ГАЗ                      | Н.Новгород          |\n| Станкостроительный завод | Одесса              |\n| КИНАП                    | Одесса              |\n| КРАЗ                     | Кременчуг           |\n| п\\\\я 12687-у             | Саранск             |\n\nb.)\n\n| Номер |\n|:------|\n| N5    |\n| N4    |\n| N12   |\n| N6    |\n| N8    |\n\nc.)\n\n| Название     | sum |\n|:-------------|:----|\n| Шлифовальщик | 5   |\n| Слесарь      | 6   |\n| Кровельщик   | 7   |\n| Программист  | 8   |\n| Автоводитель | 3   |\n| Фрезеровщик  | 7   |\n| Счетовод     | 10  |\n\n## Задание 5\n[К таблице контента](#Контент)\n#### SQL:\n```sql\n-- a.)\nSELECT \"Название\", \"Место_расположения\"\nFROM \"Наниматель\"\nWHERE \"Льгота_процент\" \u003c 8;\n\n-- b.)\nSELECT *\nFROM \"Профессии\"\nWHERE \"Стоимость_найма_руб\" \u003e 10000\n  AND \"Прежнее_место_работы\" \u003c\u003e 'Москва';\n\n-- c.)\nSELECT \"Название\", \"Место_расположения\"\nFROM \"Наниматель\"\nWHERE \"Название\" LIKE '%завод%'\n  AND \"Льгота_процент\" \u003e 0\nORDER BY \"Название\", \"Льгота_процент\" DESC;\n```\n#### Вывод:\na.)\n\n| Название                 | Место\\_расположения |\n|:-------------------------|:--------------------|\n| Рога и копыта            | Приморск            |\n| Станкостроительный завод | Одесса              |\n| КИНАП                    | Одесса              |\n| КРАЗ                     | Кременчуг           |\n\nb.)\n\n| Идентификатор | Название     | Стоимость\\_найма\\_руб | Количество | Прежнее\\_место\\_работы |\n|:--------------|:-------------|:----------------------|:-----------|:-----------------------|\n| 2             | Слесарь      | 15000                 | 6          | Кременчуг              |\n| 4             | Фрезеровщик  | 20000                 | 7          | Одесса                 |\n| 5             | Программист  | 40000                 | 8          | Киев                   |\n| 6             | Автоводитель | 25000                 | 3          | Приморск               |\n| 7             | Шлифовальщик | 17000                 | 5          | Одесса                 |\n\nc.)\n\n| Название                 | Место\\_расположения |\n|:-------------------------|:--------------------|\n| Станкостроительный завод | Одесса              |\n\n## Задание 6\n[К таблице контента](#Контент)\n#### SQL:\n```sql\n-- a.)\nSELECT \"Название\" AS Название_нанимателя,\n       \"Дата\"     AS Дата_договора,\n       \"Номер\"    AS Номер_бюро_найма\nFROM \"Наниматель\"\n         JOIN \"Трудовой_договор\" Тд ON \"Наниматель\".\"Идентификатор\" = Тд.\"Наниматель\"\n         JOIN \"Бюро_найма\" Бн ON Бн.\"Идентификатор\" = Тд.\"Бюро_найма\";\n\n-- b.)\nSELECT \"Дата\"                AS Дата_договора,\n       \"Номер\"               AS Номер_бюро_найма,\n       \"Название\"            AS Название_нанимателя,\n       \"Количество_вакансий\" AS Количество_заказанных_вакансий\nFROM \"Трудовой_договор\" Тд\n         JOIN \"Бюро_найма\" Бн on Бн.\"Идентификатор\" = Тд.\"Бюро_найма\"\n         JOIN \"Наниматель\" Н on Н.\"Идентификатор\" = Тд.\"Наниматель\";\n```\n#### Вывод:\na.)\n\n| Название\\_нанимателя     | Дата\\_договора | Номер\\_бюро\\_найма |\n|:-------------------------|:---------------|:-------------------|\n| Станкостроительный завод | 2020-01-01     | N6                 |\n| п\\\\я 12687-у             | 2020-02-01     | N4                 |\n| Рога и копыта            | 2020-03-01     | N12                |\n| ГАЗ                      | 2020-04-01     | N5                 |\n| КИНАП                    | 2020-04-01     | N6                 |\n| п\\\\я 12687-у             | 2020-04-01     | N6                 |\n| КРАЗ                     | 2020-05-01     | N4                 |\n| Станкостроительный завод | 2020-05-01     | N12                |\n| Станкостроительный завод | 2020-05-01     | N6                 |\n| КИНАП                    | 2020-06-01     | N5                 |\n| Рога и копыта            | 2020-06-01     | N4                 |\n| Рога и копыта            | 2020-06-01     | N12                |\n| КРАЗ                     | 2020-06-01     | N6                 |\n| Станкостроительный завод | 2020-06-01     | N8                 |\n| Станкостроительный завод | 2020-06-01     | N8                 |\n| КИНАП                    | 2020-07-01     | N4                 |\n| ГАЗ                      | 2020-08-01     | N4                 |\n\nb.)\n\n| Дата\\_договора | Номер\\_бюро\\_найма | Название\\_нанимателя     | Количество\\_заказанных\\_вакансий |\n|:---------------|:-------------------|:-------------------------|:---------------------------------|\n| 2020-01-01     | N6                 | Станкостроительный завод | 1                                |\n| 2020-02-01     | N4                 | п\\\\я 12687-у             | 2                                |\n| 2020-03-01     | N12                | Рога и копыта            | 1                                |\n| 2020-04-01     | N5                 | ГАЗ                      | 2                                |\n| 2020-04-01     | N6                 | КИНАП                    | 1                                |\n| 2020-04-01     | N6                 | п\\\\я 12687-у             | 1                                |\n| 2020-05-01     | N4                 | КРАЗ                     | 3                                |\n| 2020-05-01     | N12                | Станкостроительный завод | 3                                |\n| 2020-05-01     | N6                 | Станкостроительный завод | 1                                |\n| 2020-06-01     | N5                 | КИНАП                    | 4                                |\n| 2020-06-01     | N4                 | Рога и копыта            | 3                                |\n| 2020-06-01     | N12                | Рога и копыта            | 1                                |\n| 2020-06-01     | N6                 | КРАЗ                     | 2                                |\n| 2020-06-01     | N8                 | Станкостроительный завод | 1                                |\n| 2020-06-01     | N8                 | Станкостроительный завод | 1                                |\n| 2020-07-01     | N4                 | КИНАП                    | 1                                |\n| 2020-08-01     | N4                 | ГАЗ                      | 2                                |\n\n## Задание 7\n[К таблице контента](#Контент)\n#### SQL:\n```sql\n-- a.)\nSELECT \"Дата\" AS Дата_договора,\n       \"Номер_договора\",\n       Н.\"Название\" AS Название_предприятия\nFROM \"Трудовой_договор\"\n         JOIN \"Наниматель\" Н ON Н.\"Идентификатор\" = \"Трудовой_договор\".\"Наниматель\"\n         JOIN \"Профессии\" П ON П.\"Идентификатор\" = \"Трудовой_договор\".\"Профессия\"\nWHERE П.\"Название\" = 'Автоводитель'\n   OR \"Оплата\" * \"Трудовой_договор\".\"Количество_вакансий\" \u003e= 14000;\n\n-- b.)\nSELECT DISTINCT \"Номер\" AS Номер_бюро,\n                \"Адрес_конторы\" AS Адрес\nFROM \"Бюро_найма\"\n         JOIN \"Трудовой_договор\" Тд ON \"Бюро_найма\".\"Идентификатор\" = Тд.\"Бюро_найма\"\n         JOIN \"Наниматель\" Н ON Н.\"Идентификатор\" = Тд.\"Наниматель\"\nWHERE \"Льгота_процент\" \u003c 7\n  AND \"Дата\" \u003e= DATE '2020-03-01';\n\n-- c.)\nSELECT DISTINCT \"Название\" AS Предприятие\nFROM \"Наниматель\"\n         JOIN \"Трудовой_договор\" Тд ON \"Наниматель\".\"Идентификатор\" = Тд.\"Наниматель\"\n         JOIN \"Бюро_найма\" Бн ON Бн.\"Идентификатор\" = Тд.\"Бюро_найма\"\nWHERE \"Место_расположения\" \u003c\u003e 'Москва'\n  AND \"Плата_процент\" \u003e 3;\n\n-- d.)\nSELECT П.\"Название\" AS Специальность,\n       \"Оплата\" AS Стоимость\nFROM \"Наниматель\"\n         JOIN \"Трудовой_договор\" Тд on \"Наниматель\".\"Идентификатор\" = Тд.\"Наниматель\"\n         JOIN \"Бюро_найма\" Бн on Бн.\"Идентификатор\" = Тд.\"Бюро_найма\"\n         JOIN \"Профессии\" П on П.\"Идентификатор\" = Тд.\"Профессия\"\nWHERE \"Прежнее_место_работы\" = \"Место_расположения\"\nORDER BY Стоимость;\n```\n#### Вывод:\na.)\n\n| Дата\\_договора | Номер\\_договора | Название\\_предприятия    |\n|:---------------|:----------------|:-------------------------|\n| 2020-01-01     | 127             | Станкостроительный завод |\n| 2020-02-01     | 128             | п\\\\я 12687-у             |\n| 2020-03-01     | 129             | Рога и копыта            |\n| 2020-04-01     | 130             | ГАЗ                      |\n| 2020-04-01     | 131             | КИНАП                    |\n| 2020-05-01     | 133             | КРАЗ                     |\n| 2020-05-01     | 134             | Станкостроительный завод |\n| 2020-06-01     | 136             | КИНАП                    |\n| 2020-06-01     | 137             | Рога и копыта            |\n| 2020-06-01     | 138             | Рога и копыта            |\n| 2020-06-01     | 139             | КРАЗ                     |\n| 2020-06-01     | 140             | Станкостроительный завод |\n| 2020-06-01     | 141             | Станкостроительный завод |\n| 2020-07-01     | 142             | КИНАП                    |\n| 2020-08-01     | 143             | ГАЗ                      |\n\nb.)\n\n| Номер\\_бюро | Адрес      |\n|:------------|:-----------|\n| N12         | Киев       |\n| N5          | Н.Новгород |\n| N8          | Одесса     |\n| N4          | Москва     |\n| N6          | Н.Новгород |\n\nc.)\n\n| Предприятие              |\n|:-------------------------|\n| Рога и копыта            |\n| КИНАП                    |\n| Станкостроительный завод |\n| ГАЗ                      |\n\nd.)\n\n| Специальность | Стоимость |\n|:--------------|:----------|\n| Кровельщик    | 10000     |\n| Кровельщик    | 20000     |\n\n## Задание 8\n[К таблице контента](#Контент)\n#### SQL:\n```sql\nUPDATE \"Трудовой_договор\"\nSET \"Оплата\" = \"Оплата\" * (1.0 - (\n    SELECT \"Льгота_процент\" / 100.0\n    FROM \"Наниматель\"\n    WHERE \"Трудовой_договор\".\"Наниматель\" = \"Наниматель\".\"Идентификатор\"\n))\nRETURNING \"Оплата\";\n```\n#### Вывод:\n| Оплата |\n|:-------|\n| 24500  |\n| 18000  |\n| 20000  |\n| 27200  |\n| 24500  |\n| 9000   |\n| 117600 |\n| 44100  |\n| 9800   |\n| 98000  |\n| 45000  |\n| 17000  |\n| 19600  |\n| 14700  |\n| 14700  |\n| 24500  |\n| 27200  |\n\n## Задание 9\n[К таблице контента](#Контент)\n#### SQL:\n```sql\nALTER TABLE \"Трудовой_договор\"\n    ADD COLUMN Плата_бюро INT CHECK(Плата_бюро \u003e= 0);\n\nUPDATE \"Трудовой_договор\"\nSET Плата_бюро = \"Оплата\" * (\n    SELECT \"Плата_процент\" / 100.0\n    FROM \"Бюро_найма\"\n    WHERE \"Трудовой_договор\".\"Бюро_найма\" = \"Бюро_найма\".\"Идентификатор\"\n)\nRETURNING \"Трудовой_договор\".Плата_бюро;\n```\n#### Вывод:\n| Плата\\_бюро |\n|:------------|\n| 735         |\n| 540         |\n| 2200        |\n| 1088        |\n| 735         |\n| 270         |\n| 3528        |\n| 4851        |\n| 294         |\n| 3920        |\n| 1350        |\n| 1870        |\n| 588         |\n| 1323        |\n| 1323        |\n| 735         |\n| 816         |\n\n## Задание 10\n[К таблице контента](#Контент)\n#### SQL:\n```sql\n-- a.)\nSELECT DISTINCT \"Номер\" AS Номер_бюро\nFROM \"Бюро_найма\"\n         JOIN \"Трудовой_договор\" Тд on \"Бюро_найма\".\"Идентификатор\" = Тд.\"Бюро_найма\"\nWHERE \"Наниматель\" IN (\n    SELECT \"Идентификатор\"\n    FROM \"Наниматель\"\n    WHERE \"Место_расположения\" = 'Н.Новгород'\n);\n\n-- b.)\nSELECT DISTINCT \"Название\" AS Профессия\nFROM \"Профессии\"\nWHERE \"Идентификатор\" NOT IN (\n    SELECT DISTINCT \"Профессии\".\"Идентификатор\"\n    FROM \"Профессии\"\n             JOIN \"Трудовой_договор\" Тд on \"Профессии\".\"Идентификатор\" = Тд.\"Профессия\"\n             JOIN \"Наниматель\" Н on Н.\"Идентификатор\" = Тд.\"Наниматель\"\n    WHERE \"Льгота_процент\" \u003c 10\n);\n\n-- c.)\n-- -- 7.a.)\nSELECT \"Дата\" AS Дата_договора,\n       \"Номер_договора\",\n       Н.\"Название\" AS Название_предприятия\nFROM \"Трудовой_договор\"\n         JOIN \"Наниматель\" Н ON Н.\"Идентификатор\" = \"Трудовой_договор\".\"Наниматель\"\nWHERE \"Номер_договора\" IN (\n    SELECT \"Номер_договора\"\n    FROM \"Трудовой_договор\"\n             JOIN \"Профессии\" П on П.\"Идентификатор\" = \"Трудовой_договор\".\"Профессия\"\n             JOIN \"Наниматель\" Н2 on Н2.\"Идентификатор\" = \"Трудовой_договор\".\"Наниматель\"\n    WHERE П.\"Название\" = 'Автоводитель'\n       OR \"Оплата\" * \"Трудовой_договор\".\"Количество_вакансий\" \u003e= 14000\n);\n-- -- 7.b.)\nSELECT \"Номер\" AS Номер_бюро,\n       \"Адрес_конторы\" AS Адрес\nFROM \"Бюро_найма\"\nWHERE \"Идентификатор\" IN (\n    SELECT \"Бюро_найма\".\"Идентификатор\"\n    FROM \"Бюро_найма\"\n             JOIN \"Трудовой_договор\" Тд on \"Бюро_найма\".\"Идентификатор\" = Тд.\"Бюро_найма\"\n             JOIN \"Наниматель\" Н on Н.\"Идентификатор\" = Тд.\"Наниматель\"\n    WHERE \"Льгота_процент\" \u003c 7\n      AND \"Дата\" \u003e= DATE '2020-03-01'\n);\n```\n#### Вывод:\na.)\n\n| Номер\\_бюро |\n|:------------|\n| N4          |\n| N5          |\n\nb.)\n\n| Профессия |\n|:----------|\n\nc.)\n7.a) переделанное\n\n| Дата\\_договора | Номер\\_договора | Название\\_предприятия    |\n|:---------------|:----------------|:-------------------------|\n| 2020-01-01     | 127             | Станкостроительный завод |\n| 2020-02-01     | 128             | п\\\\я 12687-у             |\n| 2020-03-01     | 129             | Рога и копыта            |\n| 2020-04-01     | 130             | ГАЗ                      |\n| 2020-04-01     | 131             | КИНАП                    |\n| 2020-05-01     | 133             | КРАЗ                     |\n| 2020-05-01     | 134             | Станкостроительный завод |\n| 2020-06-01     | 136             | КИНАП                    |\n| 2020-06-01     | 137             | Рога и копыта            |\n| 2020-06-01     | 138             | Рога и копыта            |\n| 2020-06-01     | 139             | КРАЗ                     |\n| 2020-06-01     | 140             | Станкостроительный завод |\n| 2020-06-01     | 141             | Станкостроительный завод |\n| 2020-07-01     | 142             | КИНАП                    |\n| 2020-08-01     | 143             | ГАЗ                      |\n\n7.b.) переделанное\n\n| Номер\\_бюро | Адрес      |\n|:------------|:-----------|\n| N5          | Н.Новгород |\n| N4          | Москва     |\n| N12         | Киев       |\n| N6          | Н.Новгород |\n| N8          | Одесса     |\n\n## Задание 11\n[К таблице контента](#Контент)\n#### SQL:\n```sql\n-- a.)\nSELECT DISTINCT \"Название\" AS Профессия\nFROM \"Профессии\"\n         JOIN \"Трудовой_договор\" Тд on \"Профессии\".\"Идентификатор\" = Тд.\"Профессия\"\nWHERE \"Количество_вакансий\" \u003e= ALL (\n    SELECT \"Количество_вакансий\"\n    FROM \"Трудовой_договор\"\n);\n\n-- b.)\nSELECT DISTINCT \"Название\"\nFROM \"Наниматель\"\n         JOIN \"Трудовой_договор\" Тд on \"Наниматель\".\"Идентификатор\" = Тд.\"Наниматель\"\n         JOIN \"Бюро_найма\" Бн on Бн.\"Идентификатор\" = Тд.\"Бюро_найма\"\nWHERE \"Место_расположения\" \u003c\u003e Бн.\"Адрес_конторы\"\n  AND \"Оплата\" \u003e= ALL (\n    SELECT \"Оплата\"\n    FROM \"Трудовой_договор\"\n             JOIN \"Бюро_найма\" Бн2 on Бн2.\"Идентификатор\" = \"Трудовой_договор\".\"Бюро_найма\"\n             JOIN \"Наниматель\" Н on Н.\"Идентификатор\" = \"Трудовой_договор\".\"Наниматель\"\n    WHERE Н.\"Место_расположения\" \u003c\u003e Бн2.\"Адрес_конторы\"\n);\n\n-- c.) --7.c)\nSELECT DISTINCT \"Название\" AS Предприятие\nFROM \"Наниматель\"\nWHERE \"Идентификатор\" = ANY (\n    SELECT Н.\"Идентификатор\"\n    FROM \"Наниматель\" Н\n             JOIN \"Трудовой_договор\" Тд on Н.\"Идентификатор\" = Тд.\"Наниматель\"\n             JOIN \"Бюро_найма\" Бн on Бн.\"Идентификатор\" = Тд.\"Бюро_найма\"\n    WHERE Н.\"Место_расположения\" \u003c\u003e 'Москва'\n      AND \"Плата_процент\" \u003e 3\n);\n\n-- d.)\nSELECT DISTINCT \"Профессии\".\"Название\" AS Профессия\nFROM \"Профессии\"\n         JOIN \"Трудовой_договор\" Т on \"Профессии\".\"Идентификатор\" = Т.\"Профессия\"\n         JOIN \"Наниматель\" Н on Н.\"Идентификатор\" = Т.\"Наниматель\"\nWHERE \"Стоимость_найма_руб\" \u003e= ALL (\n    SELECT П.\"Стоимость_найма_руб\"\n    FROM \"Профессии\" П\n             JOIN \"Трудовой_договор\" Тд on П.\"Идентификатор\" = Тд.\"Профессия\"\n             JOIN \"Наниматель\" Н on Н.\"Идентификатор\" = Тд.\"Наниматель\"\n    WHERE \"Место_расположения\" = 'Н.Новгород'\n)\n  AND \"Место_расположения\" = 'Н.Новгород';\n```\n#### Вывод:\na.)\n\n| Профессия |\n|:----------|\n| Счетовод  |\n\nb.)\n\n| Название |\n|:---------|\n| КРАЗ     |\n\nc.)\n\n| Предприятие              |\n|:-------------------------|\n| ГАЗ                      |\n| КИНАП                    |\n| Рога и копыта            |\n| Станкостроительный завод |\n\nd.)\n\n| Профессия    |\n|:-------------|\n| Шлифовальщик |\n\n## Задание 12\n[К таблице контента](#Контент)\n#### SQL:\n```sql\nSELECT \"Место_расположения\"\nFROM \"Наниматель\"\nUNION\nSELECT \"Адрес_конторы\"\nFROM \"Бюро_найма\";\n```\n#### Вывод:\n| Место\\_расположения |\n|:--------------------|\n| Киев                |\n| Москва              |\n| Саранск             |\n| Н.Новгород          |\n| Приморск            |\n| Одесса              |\n| Кременчуг           |\n\n## Задание 13\n[К таблице контента](#Контент)\n#### SQL:\n```sql\n-- a.)\nSELECT EXISTS(\n               SELECT \"Профессии\".\"Название\"\n               FROM \"Профессии\"\n                        JOIN \"Трудовой_договор\" Тд on \"Профессии\".\"Идентификатор\" = Тд.\"Профессия\"\n                        JOIN \"Наниматель\" Н on Н.\"Идентификатор\" = Тд.\"Наниматель\"\n               WHERE \"Место_расположения\" \u003c\u003e 'Приморск'\n               GROUP BY \"Профессии\".\"Название\"\n               HAVING COUNT(DISTINCT \"Место_расположения\") + 1 = (SELECT COUNT(DISTINCT Н2.\"Место_расположения\")\n                                                                  FROM \"Наниматель\" Н2)\n           );\n-- Выводит false, чтобы исправить\n-- быстрее всего добавить для Кровельщика договор в Н.Новгород\nINSERT INTO \"Трудовой_договор\" (\"Номер_договора\", \"Дата\", \"Наниматель\", \"Бюро_найма\", \"Профессия\",\n                                \"Количество_вакансий\", \"Оплата\", \"Плата_бюро\")\nVALUES (999, NOW()::DATE, 2, 1, 1, 1, 1, 0);\n-- теперь true\n\n-- b.)\nSELECT EXISTS(\n               SELECT \"Номер\" AS Номер_бюро\n               FROM \"Бюро_найма\"\n                        JOIN \"Трудовой_договор\" Тд on \"Бюро_найма\".\"Идентификатор\" = Тд.\"Бюро_найма\"\n                        JOIN \"Профессии\" П on П.\"Идентификатор\" = Тд.\"Профессия\"\n               WHERE \"Стоимость_найма_руб\" \u003e 15000\n               GROUP BY Номер_бюро\n               HAVING COUNT(DISTINCT \"Профессия\") = (SELECT COUNT(П2.\"Идентификатор\")\n                                                     FROM \"Профессии\" П2\n                                                     WHERE П2.\"Стоимость_найма_руб\" \u003e 15000)\n           );\n-- Выводит false, чтобы исправить\n-- быстрее всего добавить договор для N4 бюро на Фрезеровщик,Счетовод,Слесарь,Кровельщик\nINSERT INTO \"Трудовой_договор\" (\"Номер_договора\", \"Дата\", \"Наниматель\", \"Бюро_найма\", \"Профессия\",\n                                \"Количество_вакансий\", \"Оплата\", \"Плата_бюро\")\nVALUES (1000, NOW()::DATE, 2, 2, 1, 1, 15001, 0),\n       (1001, NOW()::DATE, 2, 2, 2, 1, 15001, 0),\n       (1002, NOW()::DATE, 2, 2, 3, 1, 15001, 0),\n       (1003, NOW()::DATE, 2, 2, 4, 1, 15001, 0);\n-- теперь true\n\n```\n#### Вывод:\na.)\n\n| exists |\n|:-------|\n| false  |\n\nb.)\n\n| exists |\n|:-------|\n| false  |\n\n## Задание 14\n[К таблице контента](#Контент)\n#### SQL:\n```sql\n-- a.)\nSELECT AVG(\"Плата_бюро\")\nFROM \"Бюро_найма\"\n         join \"Трудовой_договор\" Тд on \"Бюро_найма\".\"Идентификатор\" = Тд.\"Бюро_найма\"\nWHERE \"Идентификатор\" IN (SELECT Б.\"Идентификатор\"\n                          FROM \"Бюро_найма\" Б\n                                   join \"Трудовой_договор\" Т on \"Бюро_найма\".\"Идентификатор\" = Т.\"Бюро_найма\"\n                                   join \"Наниматель\" Н on Н.\"Идентификатор\" = Т.\"Наниматель\"\n                          GROUP BY Б.\"Идентификатор\"\n                          HAVING COUNT(\"Место_расположения\" = 'Одесса') =\n                                 (SELECT COUNT(*) FROM \"Наниматель\" Н2 WHERE Н2.\"Место_расположения\" = 'Одесса'));\n\n-- b.)\nSELECT SUM(\"Оплата\")\nFROM \"Трудовой_договор\";\n\n-- c.)\nSELECT COUNT(DISTINCT \"Профессии\".\"Название\")\nFROM \"Профессии\"\n         join \"Трудовой_договор\" Тд on \"Профессии\".\"Идентификатор\" = Тд.\"Профессия\"\n         join \"Наниматель\" Н on Н.\"Идентификатор\" = Тд.\"Наниматель\"\nWHERE \"Место_расположения\" = 'Н.Новгород'\n  AND \"Дата\" \u003c DATE '2020-01-01';\n\n-- d.)\nSELECT AVG(count)\nFROM (SELECT SUM(\"Количество_вакансий\") AS count\n      FROM \"Трудовой_договор\"\n               JOIN \"Профессии\" П on П.\"Идентификатор\" = \"Трудовой_договор\".\"Профессия\"\n      WHERE \"Стоимость_найма_руб\" \u003e 20000\n      GROUP BY \"Профессия\") AS countings;\n```\n#### Вывод:\n\na.)\n\n| avg    |\n|:-------|\n| 1913.5 |\n\nb.)\n\n| sum    |\n|:-------|\n| 555400 |\n\nc.)\n\n| count |\n|:------|\n| 0     |\n\nd.)\n\n| avg                |\n|:-------------------|\n| 3.3333333333333333 |\n\n## Задание 15\n[К таблице контента](#Контент)\n#### SQL:\n```sql\n-- a.)\nSELECT \"Название\" AS Предприятие,\n       \"Номер\"    AS Бюро_найма,\n       SUM(\"Оплата\")\nFROM \"Наниматель\"\n         JOIN \"Трудовой_договор\" Тд on \"Наниматель\".\"Идентификатор\" = Тд.\"Наниматель\"\n         JOIN \"Бюро_найма\" Бн on Бн.\"Идентификатор\" = Тд.\"Бюро_найма\"\nGROUP BY \"Название\", \"Номер\";\n\n-- b.)\nSELECT \"Номер\"                 AS Бюро_найма,\n       COUNT(\"Номер_договора\") AS Количество_договоров\nFROM \"Бюро_найма\"\n         JOIN \"Трудовой_договор\" Тд on \"Бюро_найма\".\"Идентификатор\" = Тд.\"Бюро_найма\"\nGROUP BY \"Номер\"\nHAVING COUNT(\"Номер_договора\") \u003e 2;\n\n-- c.)\nSELECT \"Место_расположения\", COUNT(*) AS Количество_предприятий\nFROM \"Наниматель\"\nGROUP BY \"Место_расположения\"\nHAVING COUNT(*) \u003e 0;\n\n-- d.)\nSELECT EXTRACT(MONTH FROM \"Дата\") AS Номер_месяца,\n       \"Номер\"                    AS Бюро_найма,\n       SUM(\"Оплата\")              AS Суммарная_оплата\nFROM \"Трудовой_договор\"\n         JOIN \"Бюро_найма\" Бн on Бн.\"Идентификатор\" = \"Трудовой_договор\".\"Бюро_найма\"\nGROUP BY EXTRACT(MONTH FROM \"Дата\"), \"Номер\"\nHAVING SUM(\"Оплата\") \u003e 200000\nORDER BY EXTRACT(MONTH FROM \"Дата\");\n```\n#### Вывод:\na.)\n\n| Предприятие              | Бюро\\_найма | sum    |\n|:-------------------------|:------------|:-------|\n| Рога и копыта            | N12         | 37000  |\n| КРАЗ                     | N6          | 19600  |\n| КРАЗ                     | N4          | 117600 |\n| Станкостроительный завод | N8          | 29400  |\n| ГАЗ                      | N5          | 27200  |\n| Рога и копыта            | N4          | 45000  |\n| ГАЗ                      | N4          | 27200  |\n| Станкостроительный завод | N6          | 34300  |\n| п\\\\я 12687-у             | N4          | 18000  |\n| КИНАП                    | N4          | 24500  |\n| п\\\\я 12687-у             | N6          | 9000   |\n| КИНАП                    | N5          | 98000  |\n| КИНАП                    | N6          | 24500  |\n| Станкостроительный завод | N12         | 44100  |\n\nb.)\n\n| Бюро\\_найма | Количество\\_договоров |\n|:------------|:----------------------|\n| N12         | 3                     |\n| N6          | 5                     |\n| N4          | 5                     |\n\nc.)\n\n| Место\\_расположения | Количество\\_предприятий |\n|:--------------------|:------------------------|\n| Н.Новгород          | 1                       |\n| Приморск            | 1                       |\n| Саранск             | 1                       |\n| Одесса              | 2                       |\n| Кременчуг           | 1                       |\n\nd.)\n\n| Номер\\_месяца | Бюро\\_найма | Суммарная\\_оплата |\n|:--------------|:------------|:------------------|\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyawkar%2Fhse-postgresql-lab-2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyawkar%2Fhse-postgresql-lab-2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyawkar%2Fhse-postgresql-lab-2/lists"}