├── .gitattributes
├── QA
├── Effective Mobile
│ └── README.md
├── HRlink
│ └── README.md
├── Sendsay
│ └── README.md
├── Test task Purrweb.md
├── ООО Крит
│ └── README.md
└── ООО Синтека
│ └── README.md
├── README.md
├── analytics
├── AWEM продуктовый аналитик
│ ├── Awem_saw.csv
│ └── README.md
├── Amazon
│ ├── README.md
│ └── media
│ │ ├── 1.png
│ │ ├── 2.png
│ │ └── 3.png
├── Aviasales Продуктовый аналитик
│ ├── Aviasales Test assignment first stage.ipynb
│ ├── README.md
│ └── task_1_events.csv
├── Avito
│ ├── Avito.md
│ ├── media
│ │ └── 1.png
│ ├── Авито.md
│ └── Математический тест Авито.md
├── BOLT аналитик данных
│ ├── BOLT Data_Analyst_test_task_01-2023.xlsx
│ └── README.md
├── BST Digital Data Scientist
│ └── data scientist task.txt
├── Babbel Продуктовый Аналитик
│ ├── README.md
│ └── learning_sessions.csv
├── Bolt Fraud Analyst
│ ├── 1st_adyen_rides-success-and-fail.csv.zip
│ └── README.md
├── Chibbis Продуктовый аналитик
│ └── README.md
├── Cian Аналитик
│ ├── README.md
│ └── Тестовый набор данных (Заказы).xlsx
├── CloudReports Аналитик данных
│ └── README.md
├── Crazy Panda Аналитик Данных
│ └── README.md
├── Delivery Аналитик Данных
│ ├── DA_sql_sample.xlsx.zip
│ └── оценка_категорий.csv.zip
├── Dodo Brands Data Analyst
│ ├── DA_sql_sample - sql_task.csv
│ ├── README.md
│ └── оценка_категорий_4.csv
├── Dodo Brands Web-Mobile analyst
│ └── README.md
├── Driveback Аналитик
│ ├── 2018.02.06 - hits.csv
│ ├── 2018.02.06 - orders.csv
│ ├── 2018.02.06 - orders.xlsx
│ ├── README.md
│ └── media
│ │ └── 1.png
├── Elfsight Product Analyst
│ ├── README.md
│ └── sample_data.csv
├── FriendsOnly Продуктовый Аналитик
│ └── README.md
├── Genius Sport Reporting Analyst
│ ├── 2020.xlsx
│ ├── 2021.xlsx
│ ├── 2022.xlsx
│ └── Practical test-new - 2 Part.pbix
├── Happy Games Studio Аналитик Данных
│ └── README.md
├── Home Credit Bank Руководитель Отдела Аналитики
│ ├── README.md
│ └── media
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ ├── 4.png
│ │ ├── 5.png
│ │ └── 6.png
├── Kaspi.kz продуктовый аналитик
│ ├── .DS_Store
│ ├── 7c91b07c-59b9-4a94-82b2-d7cd6c49ebc4_Weekend_Offer_для_продуктовых_аналитиков__тестовое_задание_.pdf
│ ├── Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb.html
│ └── Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb
│ │ ├── Picture11111.png
│ │ ├── Screen_Shot_2022-08-25_at_3.00.52_PM.png
│ │ ├── Screen_Shot_2022-08-26_at_5.26.59_PM 1.png
│ │ ├── Screen_Shot_2022-08-26_at_5.26.59_PM.png
│ │ ├── Screen_Shot_2022-08-27_at_10.29.55_AM.png
│ │ ├── Screen_Shot_2022-08-31_at_3.08.14_PM.png
│ │ ├── Untitled 1.jpeg
│ │ ├── Untitled 2.jpeg
│ │ ├── Untitled 3.jpeg
│ │ ├── Untitled.jpeg
│ │ ├── slq2-1.png
│ │ └── sql3-3.png
├── LESTA Аналитик Данных
│ └── README.md
├── MediaScope Аналитик Данных
│ ├── MediaScope – дата аналитик - Тестовое xn--80aalfgj8a.xlsx
│ └── README.md
├── MediaSoft
│ ├── MediaSoft.Тестовое задание.Системный _ Бизнес-аналитик.pdf
│ └── README.md
├── Nortas Analitics Аналитик данных
│ ├── README.md
│ └── Копия Копия NA! Тестовое задание Power BI.xlsx
├── Ozon
│ ├── Тестовое задание аналитику BX_.docx
│ └── Тестовое задание_ОЗОН.pdf
├── README.docx
├── Realweb Camp Analytics
│ ├── README.md
│ └── Realweb summer_camp_data.csv
├── Rekor Data Engineer
│ ├── Incidents SQL question (2).pdf
│ └── de test.zip
├── Samsung Data Manager
│ └── Data manager (1).docx
├── Skypro Data Analyst
│ ├── README.md
│ └── ТЗ _ Data Analyst Skypro .docx
├── Teikametrics Analyst
│ ├── Paid Media _ Data Set for Analytical Exercises - 2023 (1) (2).xlsx
│ └── README.md
├── Tinkoff Product Analyst
│ └── README.md
├── Vizor Data Analytics
│ ├── README.md
│ └── Vizor_ads_data.csv
├── WhoIsBlogger (WIB), junior data analyst
│ └── README.md
├── Wolt Аналитик Данных
│ ├── README.md
│ └── dataset_for_analyst_assignment_20201120.csv
├── X5 Аналитик Данных (стажировка)
│ └── README.md
├── ivi
│ └── README.md
├── Альфа Банк Продуктовый Аналитик
│ ├── README.md
│ └── media
│ │ ├── 1.png
│ │ ├── 2.png
│ │ └── 3.png
├── Альфабанк продуктовый аналитик
│ ├── README.md
│ └── media
│ │ ├── 1.png
│ │ ├── 2.png
│ │ └── 3.png
├── Банк Открытие Продуктовый Аналитик
│ ├── README.md
│ └── media
│ │ └── 1.png
├── Банк ренессанс кредит Аналитик
│ ├── README.md
│ └── Банк Ренессанс Кредит Аналитик.docx
├── ВК Аналитик данных
│ └── README.md
├── ВК Одноклассники Продуктовая аналитика
│ ├── AB_Test_Results (1).xlsx
│ ├── README.md
│ └── media
│ │ ├── 1.png
│ │ ├── 2.png
│ │ └── 3.png
├── ВТБ Аналитик данных
│ ├── README.md
│ ├── Test.ipynb
│ └── database.db
├── Газпром
│ ├── README.md
│ └── тестовое задание ПА Газпром.pptx
├── Делимобиль
│ ├── README.md
│ └── test_senior_data.csv
├── Контур Продуктовый аналитик
│ ├── README.md
│ ├── media
│ │ └── 1.png
│ └── Кейс_для_проверки_компетенция_аналитика_2.xlsx
├── Красный Яр Аналитик Данных
│ ├── README.md
│ └── Testovoe_zadanie_analitik.xlsx
├── МТС Продуктовый аналитик
│ ├── README.md
│ └── МТС_собеседование_02.docx
├── Магнит
│ └── README.md
├── Марс Аналитик данных
│ ├── Raw data example.xlsx
│ └── Приглашение на центр оценки.pdf
├── Неизвестные
│ ├── GameDev.ipynb
│ ├── README.docx
│ ├── SQL task and result.docx
│ ├── Task description.docx
│ ├── _____________________ (1).docx
│ ├── telegram-cloud-photo-size-1-4967487225717697528-y.jpeg
│ ├── telegram-cloud-photo-size-1-4967487225717697529-y.jpeg
│ ├── Аналитик Данных.docx
│ ├── Тестовое 08062021- 1 часть.pdf
│ ├── Тестовое задание EdTech.pdf
│ ├── Тестовое задание EdTech_2.pdf
│ ├── Тестовое задание Социальная Сеть.docx
│ ├── Тестовое.docx
│ ├── ТестовоеМТП.docx
│ └── Узнаете какие-то из тестовых_.docx
├── Росмэн
│ ├── Тестовое задание (Excel).xlsx
│ └── Тестовое задание (SQL).xlsx
├── Роснефть HR аналитик
│ └── Копия Тест!_с xn--g1aqe.xlsm
├── Самокат Аналитик Данных
│ ├── README.md
│ ├── order_lines.txt
│ ├── orders.csv
│ ├── products.csv
│ └── warehouses.csv
├── Самокат Аналитик
│ └── Тестирование Самокат Аналитик xn--80ah2aa4b9a.xlsx
├── Сбербанк Инженер Данных
│ └── DE_task_solution.docx
├── Северсталь
│ └── Задание 1_2023 (Северсталь).xlsx
├── Совкомбанк Страхование
│ ├── README.md
│ ├── задание_1_реестр.xlsx
│ └── задание_2_город_vba.xlsx
├── Спортмастер
│ ├── 1. задание - sql (1).xlsx
│ └── Тест Собеседование (1).xlsx
├── Сравниру Product Analyst
│ ├── .DS_Store
│ ├── README.md
│ ├── answers.txt
│ └── data.xlsx
├── Тинькофф Аналитик SQL
│ └── Тинькофф Аналитик SQL.jpeg
└── Учи ру Продуктовый аналитк
│ └── README.md
├── backend
├── Appstorespy
│ └── README.md
├── Edstein
│ ├── README.md
│ └── Тестовое задание_ API для статистики по погоде.pdf
├── Greensight
│ └── README.md
├── HealthSamurai
│ └── HealthSamurai_clojure.md
├── ItGlobal
│ └── README.md
├── Oxem Studio
│ ├── README.md
│ └── Бэкенд-разработчик — Тестовое задание от Oxem Studio-2024111916355728.pdf
├── Python
│ ├── ABZ.agency
│ │ └── Тестовое задание на позицию Junior Python Developer.pdf
│ ├── AppBooster
│ │ └── backend.md
│ ├── Appstorespy
│ │ └── test_backend.md
│ ├── Aviasales
│ │ ├── README.md
│ │ ├── RS_Via-3.xml
│ │ └── RS_ViaOW.xml
│ ├── AvitoTech
│ │ ├── README.md
│ │ ├── README1.md
│ │ └── matrix.txt
│ ├── Bewise
│ │ └── test_python.md
│ ├── DjangoTestTask
│ │ ├── Task-itself.md
│ │ └── django-test-task-main.zip
│ ├── FitnessKit
│ │ └── тестовое бэк.pdf
│ ├── FunBox
│ │ └── python.pdf
│ ├── Ivelum
│ │ └── python.md
│ ├── KODE
│ │ └── README.md
│ ├── KazanExpress
│ │ └── README.md
│ ├── KosyanMedia
│ │ ├── README.md
│ │ ├── RS_Via-3.xml
│ │ └── RS_ViaOW.xml
│ ├── MarketIntelligence
│ │ ├── README.md
│ │ └── README1.md
│ ├── OstrovokTech
│ │ ├── README.md
│ │ ├── content-tech-task.md
│ │ └── employee.sql
│ ├── PyShop
│ │ ├── PyShop_python_trainee.md
│ │ ├── README.md
│ │ └── api.yml
│ ├── Sberbank
│ │ └── DE_task_solution.docx
│ ├── SoftwareTester
│ │ ├── readme.md
│ │ └── software_tester-main.zip
│ └── UpTrader
│ │ └── test_python.md
├── SocialMediaHolding
│ └── README.md
├── SoftPro
│ └── Softpro.Тестовое_задание.pdf
├── java_time_tracker.md
└── ООО МСтрой
│ ├── README.md
│ └── ЗАДАНИЕ.pdf
├── data_scientist
└── BST digital
│ ├── README.md
│ └── data scientist task.txt
├── frontend
└── valatris_api.md
└── sql
├── airbnb
├── airbnb_sql_tests.md
└── tests
│ ├── 58
│ ├── 58.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ ├── 59
│ ├── 59.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ ├── 61
│ ├── 61.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ ├── 62
│ ├── 62.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ ├── 64
│ ├── 64.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ ├── 65
│ ├── 65.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ ├── 66
│ ├── 66.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ ├── 68
│ ├── 68.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ ├── 69
│ ├── 69.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ ├── 70
│ ├── 70.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ ├── 71
│ ├── 71.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ ├── 72
│ ├── 72.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ ├── 73
│ ├── 73.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ ├── 74
│ ├── 74.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ ├── 76
│ ├── 76.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ ├── 78
│ ├── 78.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ ├── 79
│ ├── 79.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
│ └── 80
│ ├── 80.md
│ ├── reservations.sql
│ ├── reviews.sql
│ ├── rooms.sql
│ └── users.sql
├── alfabank
├── alfabank_sql_tasks.md
└── tests
│ ├── 93
│ ├── 93.md
│ ├── customers.sql
│ ├── product_categories.sql
│ ├── products.sql
│ └── purchases.sql
│ └── 94
│ ├── 94.md
│ ├── customers.sql
│ ├── product_categories.sql
│ ├── products.sql
│ └── purchases.sql
├── domclick
├── domclick_sql_tests.md
└── tests
│ ├── 109
│ ├── 109.md
│ ├── cities.sql
│ ├── countries.sql
│ ├── event_types.sql
│ ├── events.sql
│ └── regions.sql
│ └── 111
│ ├── 111.md
│ ├── cities.sql
│ ├── countries.sql
│ ├── event_types.sql
│ ├── events.sql
│ └── regions.sql
├── samokat
├── samokat_sql_tests.md
└── tests
│ └── 97
│ ├── 97.md
│ └── warehouses.sql
├── sberbank
├── sberbank_sql_tests.md
└── tests
│ └── 103
│ ├── 103.md
│ ├── departments.sql
│ └── employees.sql
└── vk
├── tests
├── 99
│ ├── 99.md
│ └── purchases.sql
└── 101
│ ├── 101.md
│ └── transactions.sql
└── vk_sql_tests.md
/.gitattributes:
--------------------------------------------------------------------------------
1 | analytics/Wolt[[:space:]]Аналитик[[:space:]]Данных/dataset_for_analyst_assignment_20201120.csv filter=lfs diff=lfs merge=lfs -text
2 | analytics/Delivery[[:space:]]Аналитик[[:space:]]Данных/оценка_категорий.csv.zip filter=lfs diff=lfs merge=lfs -text
3 | analytics/Самокат[[:space:]]Аналитик[[:space:]]Данных/orders.csv filter=lfs diff=lfs merge=lfs -text
4 | analytics/Самокат[[:space:]]Аналитик[[:space:]]Данных/order_lines.txt filter=lfs diff=lfs merge=lfs -text
5 | analytics/Делимобиль/test_senior_data.csv filter=lfs diff=lfs merge=lfs -text
6 | analytics/ВТБ[[:space:]]Аналитик[[:space:]]данных/database.db filter=lfs diff=lfs merge=lfs -text
7 | analytics/Babbel[[:space:]]Продуктовый[[:space:]]Аналитик/learning_sessions.csv filter=lfs diff=lfs merge=lfs -text
8 | analytics/Dodo[[:space:]]Brands[[:space:]]Data[[:space:]]Analyst/DA_sql_sample[[:space:]]-[[:space:]]sql_task.csv filter=lfs diff=lfs merge=lfs -text
9 | analytics/Dodo[[:space:]]Brands[[:space:]]Data[[:space:]]Analyst/оценка_категорий_4.csv filter=lfs diff=lfs merge=lfs -text
10 | analytics/Bolt[[:space:]]Fraud[[:space:]]Analyst/1st_adyen_rides-success-and-fail.csv.zip filter=lfs diff=lfs merge=lfs -text
11 | analytics/MediaScope[[:space:]]Аналитик[[:space:]]Данных/MediaScope[[:space:]]–[[:space:]]дата[[:space:]]аналитик[[:space:]]-[[:space:]]Тестовое[[:space:]]xn--80aalfgj8a.xlsx filter=lfs diff=lfs merge=lfs -text
12 |
--------------------------------------------------------------------------------
/QA/Effective Mobile/README.md:
--------------------------------------------------------------------------------
1 | **Тестовое задание QA**
2 |
3 | **E2E UI**
4 |
5 | **Цель:**
6 | Создать автоматический e2e тест для проверки сценария покупки товара на сайте [saucedemo.com](https://www.saucedemo.com/) с использованием Python \+ Selenium или Playwright. Тест должен проверять процесс от авторизации до завершения покупки, с возможностью легко воспроизвести его на любом компьютере.
7 |
8 | ### **Требования:**
9 |
10 | #### **1\. Сценарий теста:**
11 |
12 | Тест должен выполнять следующие действия на сайте [saucedemo.com](https://www.saucedemo.com/):
13 |
14 | * **Авторизация:** Использовать тестовый аккаунт:
15 | * Логин: standard\_user
16 | * Пароль: secret\_sauce
17 | * **Выбор товара:** Выбрать один товар (например, "Sauce Labs Backpack") и добавить его в корзину.
18 | * **Оформление покупки:**
19 | * Перейти в корзину и убедиться, что товар добавлен.
20 | * Оформить покупку, заполнив поля
21 | * Завершить покупку.
22 | * **Проверка:** Убедиться, что покупка завершена успешно.
23 |
24 | ### **Ожидаемый результат:**
25 |
26 | Кандидат должен предоставить готовый репозиторий с проектом, который можно развернуть и запустить по инструкции в **README.md**. Тест должен корректно авторизоваться на сайте, выбрать товар, оформить покупку и проверить успешное завершение покупки.
27 |
28 | **GitHub API**
29 |
30 | **Цель**
31 | Создать автоматический тест для проверки работы с GitHub API на языке Python. Тест должен уметь создавать, проверять наличие и удалять репозиторий на GitHub. Необходимо предоставить решение, которое легко воспроизводимо на любом компьютере.
32 |
33 | **Требования**
34 |
35 | 1. **Использование GitHub API**:
36 | * Скрипт должен использовать API GitHub для выполнения следующих операций:
37 | 1. Создание нового публичного репозитория.
38 | 2. Проверка списка репозиториев для подтверждения создания.
39 | 3. Удаление репозитория.
40 | 2. **Использование переменных окружения**:
41 | * Входные данные (имя пользователя GitHub, токен API и имя репозитория) должны передаваться через переменные окружения или файл конфигурации .env.
42 | 3. **Зависимости**:
43 | * Зависимости должны быть описаны в файле requirements.txt.
44 | * Необходимые библиотеки (пример): requests и python-dotenv.
45 | 4. **Инструкция по запуску**:
46 | * Проект должен содержать файл README.md с подробной инструкцией, как установить зависимости, настроить переменные окружения и запустить тест.
47 | 5. **Структура проекта**:
48 | * Проект должен содержать следующие файлы:
49 | 1. test\_api.py — основной скрипт с тестом.
50 | 2. .env — файл с переменными окружения (необходимо указать пример).
51 | 3. requirements.txt — файл с зависимостями.
52 | 4. README.md — инструкция по установке и запуску.
53 |
54 | **Ожидаемый результат**
55 | Кандидат должен предоставить готовый репозиторий с проектом, который можно развернуть и запустить по инструкции в README.md. Тест должен корректно создавать, проверять и удалять репозиторий на GitHub.
--------------------------------------------------------------------------------
/QA/Test task Purrweb.md:
--------------------------------------------------------------------------------
1 | # Тестовое задание для QA engineer
2 |
3 | ## Описание:
4 | Сайт [Signaturely](https://staging.d2twwklgqmrfet.amplifyapp.com/login) - это сервис для электронной подписи документов. Ты можешь подписывать документ сам или отправлять другим. Существует 3 плана, в зависимости от которого расширяется функционал сервиса: можно подписывать еще больше документов, добавлять шаблоны или создавать команду.
5 |
6 | ## Задание:
7 | * Изучить данный сайт;
8 | * Подробно описать вашу стратегию (план) тестирования (что, как и когда вы будете проверять);
9 | * Добавить чек-лист проверок для страницы /documents;
10 | * Добавить к документу 3 баг-репорта: баги, которые вы найдете на сайте или же примеры с предыдущего места работы.
11 |
12 | # Примечание:
13 | Не использовать при работе вкладку Feedback;
14 |
15 |
--------------------------------------------------------------------------------
/QA/ООО Крит/README.md:
--------------------------------------------------------------------------------
1 | 1. **Составить тест-кейсы** для тестирования следующего функционала – “Реализовать возможность входа в приложение с помощью биометрии”. (за основу можно взять любое приложение, которым вы пользуетесь или пользовались, где доступна данная функция).
2 |
3 | 2. **Составить чек-лист** для проверки смены пароля в мобильном приложении. Можно использовать любое приложение, установленное у вас на смартфоне, в котором есть функционал по смене пароля.
4 |
5 | 3. **Написать баг\-репорт** для наиболее интересного\\запоминающегося бага, который был найден вами за последнее время.
6 |
7 | 4. Пользователи нашли ошибку в мобильном приложении, которое им недавно отправили. Ваши действия как тестировщика по анализу и локализации проблемы? Можно взять любое приложение, придумать ошибку или вспомнить что-то из своего опыта во время обучения или реальной работы.
8 |
9 |
--------------------------------------------------------------------------------
/QA/ООО Синтека/README.md:
--------------------------------------------------------------------------------
1 | **Блок 1 \- Логическая задача**
2 |
3 | Сейчас час ночи. За окном идет снег. Насколько велика вероятность того, что через 72 час будет солнечная погода?
4 |
5 | **Блок 2 \- Linux**
6 |
7 | 1\. Описать, что выведет данная команда в консоль Linux:
8 |
9 | grep \-C 100 "2021-02-12" application.log
10 |
11 | 2\. Описать различие команды tail и команды grep.
12 | 3\. Возможно ли использовать команды из 2 вопроса вместе, если да, то как?
13 |
14 | **Блок 3 \- SQL-запрос**
15 |
16 |
17 |
18 | https://disk.yandex.ru/i/xI\_HVRM\_t6E3Xg \- скрин таблиц
19 |
20 | В базе данных авиакомпании компании есть три таблицы.
21 |
22 | Исходя из описания таблиц базы данных, составьте SQL-запрос, в котором
23 |
24 | необходимо вывести Фамилию и количество полетов сделанных на самолетах модели “Cухой” с 01.02.22 по 28.02.22 числа .
25 |
26 | Таблицы базы данных:
27 |
28 | Таблица "pilot" содержит информацию о пилотах.
29 |
30 | Поля таблицы:
31 |
32 | "pilot\_id" – уникальный идентификатор пилота
33 |
34 | "first\_name" – имя пилота
35 |
36 | "last\_name" – фамилия пилота
37 |
38 | Таблица "airplane" содержит информацию о моделях самолетов.
39 |
40 | Поля таблицы:
41 |
42 | "airplane\_id" – уникальный идентификатор самолета
43 |
44 | "model" – модель самолета
45 |
46 |
47 |
48 | Таблица "airplane\_pilot" содержит информацию о полетах.
49 |
50 | Поля таблицы:
51 |
52 | "id" – уникальный идентификатор записи
53 |
54 | "pilot\_id" – идентификатор пилота
55 |
56 | "airplane\_id" – идентификатор самолета
57 |
58 | "flight\_date" – дата полетов
59 |
60 |
--------------------------------------------------------------------------------
/analytics/AWEM продуктовый аналитик/README.md:
--------------------------------------------------------------------------------
1 | {width="8.5in" height="10.999997812773403in"}
2 |
3 | Описаниезадачи
4 | ==============
5 |
6 | Пила сложности в игре - это механизм, который позволяет игроку
7 | постепенно увеличивать уровень сложности игры, чтобы сохранять интерес и
8 | вызов в процессе игры. Он основан на идее, что игрок должен иметь
9 | возможность постепенно улучшать свои навыки и способности, чтобы достичь
10 | новых уровней игры.
11 |
12 | В играх в жанре match-3 пила сложности работает следующим образом:
13 |
14 | 1. Предоставление легких уровней: легкие и простые задания, которые
15 | игрок легко выполняет. Это вызывает у игрока чувство уверенности и
16 | мотивации.
17 |
18 | 2. Предоставление сложных уровней: по мере того, как игрок становится
19 | опытнее, уровни становятся сложнее и требуют большей концентрации и
20 | усилий. Это вызывает у игрока чувство вызова и мотивации, так как он
21 | стремится преодолеть сложности и достичь новых целей.
22 |
23 | Таким образом, пила сложности в играх в жанре match 3 - это важный
24 | механизм, который позволяет игроку сохранять интерес и мотивацию в
25 | процессе игры. Он помогает создавать положительный эндорфинный цикл,
26 | который поддерживает мотивацию и удовлетворение игрока.
27 |
28 | **В файле saw.csv следующие данные:**
29 |
30 | SawStep - шаг пилы с уровнем, который игрок должен выиграть, чтобы
31 | пройти далее (номер шага обозначает порядок появления уровня у игрока),
32 | на каждом шаге пилы игроки тратят хард валюту - cry\_per\_user, с
33 | каждого шага пилы уходит процент игроков - churn,
34 |
35 | каждый шаг имеет свою сложность для игрока - LRC (процент поражений от
36 | всех стартов на шаге).
37 |
38 | **Задания:**
39 |
40 | 1. Проанализируйте пилу с точки зрения баланса хард валюты и оттока.
41 |
42 | 2. Предложите а/б тест с сильной гипотезой для улучшения баланса пилы.
43 |
44 | Срокииформатсдачитестовогозадания
45 | =================================
46 |
47 | По срокам выполнения тестового задания: мы не ставим ограничений –
48 | присылайте его, как только будете в нем уверены. Конечно, чем быстрее вы
49 | справитесь с заданием, тем быстрее мы вернемся с обратной связью и
50 | продолжим обсуждение данной позиции. Присылайте готовое тестовое задание
51 | на почту рекрутеру, который его выдал.
52 |
53 | Обратите внимание на то, что тестовое задание не является оплачиваемым.
54 | Также, предоставляя результат вашего тестового задания, вы принимаете
55 | то, что компания Awem может в настоящее время и/или в будущем
56 | разрабатывать внутри компании или получать от третьих лиц идеи и другие
57 | материалы, похожие по содержанию на присланные вами, но не основанные на
58 | них.
59 |
60 | Мы еще раз благодарим вас за интерес к нашей компании и желаем удачи с
61 | выполнением тестового задания! Надеемся, что оно покажется интересным и
62 | будем рады вашему фидбеку :)
63 |
--------------------------------------------------------------------------------
/analytics/Amazon/README.md:
--------------------------------------------------------------------------------
1 | **Amazon SQL and Python Task**
2 |
3 | Задача 1
4 | ========
5 |
6 | Дана таблица Orders, Необходимо написать запрос для команды
7 | маркетинга, который выявит всех киентов, кто купил iPhone, но не купил
8 | Airpods, чтобы отправить им маркетинговое предложение.
9 |
10 | Таблица и пример данных даны ниже:
11 |
12 | 
13 |
14 | Задача 2
15 | =========
16 |
17 | Дана таблица с историей подписки. Есть начало и конече периода
18 | подписки и статус. Нужно получить результат, как ~sample\ output~ .
19 | Условие для типа подписки так же дано.
20 |
21 | Amazon SQL and Python Task 1
22 |
23 | 
24 |
25 | **Задача 3**
26 |
27 | Дан LIST, нужно его сохранить задам наперед. Так же возможно
28 | предложить несколько вариантов и упомянуть про тип Big O notation,
29 | сложности алгоритма.
30 |
31 | Стоит упомянуть про использование памяти в зависимости от подхода.
32 |
33 | 
34 |
35 | Amazon SQL and Python Task 2 Amazon SQL and Python Task 3
--------------------------------------------------------------------------------
/analytics/Amazon/media/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Amazon/media/1.png
--------------------------------------------------------------------------------
/analytics/Amazon/media/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Amazon/media/2.png
--------------------------------------------------------------------------------
/analytics/Amazon/media/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Amazon/media/3.png
--------------------------------------------------------------------------------
/analytics/Aviasales Продуктовый аналитик/README.md:
--------------------------------------------------------------------------------
1 | # Задание 1
2 |
3 |
4 | Есть таблица с действиями юзеров A/B-теста (task_1_events.csv):
5 |
6 | - $events$ - установки приложения
7 | - $user\_id$ - id юзера,
8 | - $ab\_group$ - группа A/B-теста,
9 | - $ts$ - время совершения действия,
10 | - $pdate$ - дата совершения действия.
11 |
12 | Пользовательская сессия определяется по следующим правилам:
13 |
14 | 1. Новая сессия начинается после 30 минут бездействия.
15 |
16 | 2. Сессия прерывается при переходе между двумя датами.
17 |
18 | Постройте таблицу с сессиями юзеров в формате:
19 |
20 | - $user\_id$ - id юзера
21 | - $ab\_group$ - группа A/B-теста,
22 | - $start\_ts$ - время старта сессии,
23 | - $end\_ts$ - время окончания сессии,
24 | - $pdate$ - дата сессии.
25 |
26 | # Задание 2
27 |
28 | Был проведен A/B-тест.
29 |
30 | В качестве данных используйте таблицу, построенную в предыдущем задании. Первая сессия юзера считается моментом попадания в A/B-тест.
31 |
32 | Ключевая метрика эксперимента - конверсия во вторую сессию.
33 |
34 | Сделайте вывод о том, какая группа выиграла в A/B-тесте. Ответ обоснуйте.
35 |
36 |
--------------------------------------------------------------------------------
/analytics/Avito/media/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Avito/media/1.png
--------------------------------------------------------------------------------
/analytics/Avito/Авито.md:
--------------------------------------------------------------------------------
1 | Задача 1.
2 |
3 | 5 людей различного возраста случайным образом садятся за круглый стол. Какова вероятность того, что они рассядутся по возрастанию или по убыванию возраста?
4 |
5 | Задача 2.
6 |
7 | Вы подбрасываете кубик (6 граней), после чего у вас есть две возможности:
8 |
9 | 1. Взять себе сумму $, равную выпавшему на кубике числу (выпало 3 – получаете 3$)
10 |
11 | 2. Отклонить результат первого броска и подбросить кубик второй раз. После чего уже взять себе столько $, сколько выпало во второй раз (второй бросок отклонять уже нельзя)
12 |
13 | Какую стратегию нужно выбрать, чтобы максимизировать ожидаемую прибыль (при каких значениях первого броска нужно перебрасывать?)
14 |
15 | Чему равна ожидаемая прибыль при этой стратегии (математическое ожидание)?
16 |
17 | Задача 3.
18 |
19 | В БД есть 3 таблицы:
20 |
21 | • Employee (empid, empname) – содержит ФИО сотрудников
22 |
23 | • Employee_timesheet (empid, date, num_of_hours) - содержит кол-во отработанных сотрудниками часов по дням
24 |
25 | • Employee_hourly_rate (empid, hourly_rate) – содержит часовую ставку каждого сотрудника
26 |
27 | Напишите SQL-запрос, который посчитает зарплату по каждому сотруднику по месяцам.
28 |
29 | Задача 4.
30 |
31 | Чтобы между пользователями Авито было больше доверия, а жизнь мошенников стала сложнее, мы решили попробовать ввести систему отзывов: покупатель может оставить отзыв на продавца. Отзыв может быть просто рейтингом (1-5 звездочек), а может содержать дополнительно какой-то произвольный текст.
32 |
33 | 1. Предложите метрики, по которым можно будет следить за прогрессом такого проекта и определять его успешность
34 |
35 | 2. Поскольку Авито не магазин, а площадка для связи покупателя и продавца, мы в большинстве случаев не знаем, произошла ли в действительности сделка и на каких условиях. Для большинства сделок последнее, что нам известно - покупатель нажал кнопку просмотра телефона продавца или связался с ним в чате. Также мы всегда знаем логин (привязанный к email и телефону) продавца, но покупатель может быть незалогиненным. В связи с этим кажется, что есть большой риск накрутки отзывов и недобросовестного использования системы: например, профессиональные участники будут пытаться оставлять негативные отзывы на своих конкурентов и хвалебные на себя. Предположим, что система некоторое время уже работает и у нас есть данные по отзывам и всей активности клиентов: что продавал, что искал, на каких объявлениях смотрел телефоны и т.п. Как оценить масштабы накрутки, т.е. долю фальшивых отзывов?
36 |
37 | Задача 5.
38 |
39 | Представьте, что вы аналитик в крупном интернет-магазине. За последний месяц факт продаж оказался на 15% ниже прогноза и вам необходимо выяснить, в чем причина. Опишите, как бы вы решали эту задачу: какие гипотезы вы бы стали проверять, каким образом и какие данные вам для этого потребуются.
--------------------------------------------------------------------------------
/analytics/BOLT аналитик данных/BOLT Data_Analyst_test_task_01-2023.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/BOLT аналитик данных/BOLT Data_Analyst_test_task_01-2023.xlsx
--------------------------------------------------------------------------------
/analytics/BOLT аналитик данных/README.md:
--------------------------------------------------------------------------------
1 | # Assignment Description
2 |
3 | Attached is a report extract from our financial program for one month in 2017 (numbers modified).
4 |
5 | Please create a report or dashboard which:
6 |
7 | 1. **compares actuals to budgeted figures monthly and YTD,**:
8 | 2. **shows ability to see monthly trends in actuals**
9 |
10 | ### Detail Level
11 |
12 | 1. Group company together and per countries
13 | 2. 3 months period (min)
14 | 3. Revenue, Cost of sales, Total expenses and Profit.
15 |
16 | As you only have one month actuals then feel free to use whatever logic to generate those extra 2 months of actuals and 3 months of budgeted numbers.
17 |
18 | There are no right or wrong solutions as this is meant to show your way of thinking and how you approach finance data. Which also means that if you have questions then create your own truth.
19 |
--------------------------------------------------------------------------------
/analytics/BST Digital Data Scientist/data scientist task.txt:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:a3151d0116302e83d7967334576688255078783f3bbaee50e14aa867725bdab6
3 | size 2023
4 |
--------------------------------------------------------------------------------
/analytics/Babbel Продуктовый Аналитик/learning_sessions.csv:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:1b2871130840bc5f474ac9bf48b8a7ff16dc1ac9bc0f4d25f7aad708c9393453
3 | size 51474365
4 |
--------------------------------------------------------------------------------
/analytics/Bolt Fraud Analyst/1st_adyen_rides-success-and-fail.csv.zip:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:cd26b9f08df91e18c7607491a5e49e86fb058a15574b7c43813ee1af754c8f7f
3 | size 18234535
4 |
--------------------------------------------------------------------------------
/analytics/Chibbis Продуктовый аналитик/README.md:
--------------------------------------------------------------------------------
1 | ## Дано:
2 | Есть два города (А и Б). В них часть заказов доставляется нашими курьерами, а часть курьерами ресторанов.
3 |
4 | ## Задача:
5 | Проверить гипотезу, что доставка нашими курьерами увеличивает LTV юзера
6 | Распишите как бы вы стали исследовать эту гипотезу, какие бы методы применяли. Укажите, какие подводные камни могут быть. Нам важен ход мыслей, а не конкретный ответ. На собеседовании мы будем продолжать обсуждать эту задачу.
--------------------------------------------------------------------------------
/analytics/Cian Аналитик/README.md:
--------------------------------------------------------------------------------
1 | # Базы данных и SQL запросы
2 |
3 | Дан софт, автоматизирующий работу библиотеки. 3НФ схемы БД софта выглядит следующим образом:
4 |
5 | ### Произведение
6 | - id
7 | - название
8 |
9 | ### Издание
10 | - id
11 | - id_произведения
12 | - год издания
13 | - кол-во страниц
14 |
15 | ### Экземпляр
16 | - id
17 | - id_издание
18 | - инвентаризационный номер
19 |
20 | ### Лог операций
21 | - id
22 | - id_user
23 | - id_экземпляр
24 | - дата_взяли
25 | - дата_вернули
26 |
27 | Нужно написать SQL-скрипты, которые отвечают на следующие вопросы:
28 |
29 | 1. Найти произведения, которые издавались более 5 раз.
30 | 2. Проверить, есть ли экземпляры, не привязанные ни к одному изданию.
31 | 3. Для каждого пользователя найти последние три взятые им произведения. Для каждого такого произведения указать, сколько всего раз его брали (за все время).
32 | 4. Список самых неблагонадежных пользователей библиотеки — рейтинг 10 самых плохих пользователей по двум или более критериям. Критерии неблагонадежности с точки зрения бизнеса предложите самостоятельно.
33 |
34 | ### Дополнительные комментарии:
35 | 1. При оценке результата учитывается оптимальность выборок данных и возвращаемых результатов.
36 | 2. Если задачу можно решить без вложенного запроса, то решение с вложенным запросом не оптимально. Секция `WITH` — это тоже вложенный запрос.
37 | 3. Считаем, что доступны все возможности языка SQL, определенные в стандартах ANSI SQL и Hive QL ([Hive Language Manual](https://cwiki.apache.org/confluence/display/Hive/LanguageManual)).
38 |
39 | ---
40 |
41 | # Оценка критериев объявлений
42 |
43 | У вас есть сайт — доска объявлений (например, циан, авито, алиэкспресс и др. не нужно привязываться к функционалу конкретного сайта.)
44 |
45 | Задание: Предложить набор показателей, оценивающих качество базы объявлений.
46 |
47 | # Оценка рекламных каналов
48 |
49 | В течение двух недель маркетологи проводили эксперименты по двум разным рекламным площадкам (например, Google и Яндекс). На обоих ресурсах реклама была показана примерно одинаковое число раз.
50 |
51 | Какие показатели нужно измерить, чтобы сравнить эти две площадки? Маркетологи хотят оставить одну площадку. Какие будут ваши рекомендации по выбору?
52 |
53 | Комментарий: Рекомендации — это не просто перечень показателей, а рекомендации по их интерпретации и принятию решения на их основе.
54 |
55 | # Дашборд анализ заказов
56 |
57 | Есть файл с выгрузкой по истории заказов интернет-магазина (Тестовый набор данных (Заказы).xlsx).
58 |
59 | Нужно:
60 | 1. Проанализировать файл и предложить метрики, полезные для менеджера.
61 | 2. Реализовать прототип дашборда с этими метриками и данными файла. Прототип нужно реализовать в виде приложения в Tableau Public. Скачать можно[тут](https://public.tableau.com/en-us/s/). Прислать ссылку на финальный дашборд в облаке Tableau.
62 | 3. Описать сценарий работы менеджера с этим дашбордом.
63 |
--------------------------------------------------------------------------------
/analytics/Cian Аналитик/Тестовый набор данных (Заказы).xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Cian Аналитик/Тестовый набор данных (Заказы).xlsx
--------------------------------------------------------------------------------
/analytics/Delivery Аналитик Данных/DA_sql_sample.xlsx.zip:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:68af919391b79a408a59e08e851e9af7a3fd6fcd9f59273f3e9b3b08c09704b3
3 | size 4093684
4 |
--------------------------------------------------------------------------------
/analytics/Delivery Аналитик Данных/оценка_категорий.csv.zip:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:82b4433c8fdf1b8eb4525da8e7deb5d55c5119749bd1d611c22a245868c88ffa
3 | size 18861388
4 |
--------------------------------------------------------------------------------
/analytics/Dodo Brands Data Analyst/DA_sql_sample - sql_task.csv:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:34e0af20f0c261295ada026e17bb6d3230415a0af64ecf1d9300eba680cf053b
3 | size 5627020
4 |
--------------------------------------------------------------------------------
/analytics/Dodo Brands Data Analyst/оценка_категорий_4.csv:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:961e6f0209c315316e54782dcace5bfadb726b2e421d9559ed5c85d7fda336a0
3 | size 78933158
4 |
--------------------------------------------------------------------------------
/analytics/Dodo Brands Web-Mobile analyst /README.md:
--------------------------------------------------------------------------------
1 | # Web/Mobile analyst
2 |
3 | ## Тестовое задание
4 |
5 | Для участия в конкурсе на позицию Web/Mobile analyst предлагаем вам решить следующее задание.
6 |
7 | 1. Каналы коммуникации - site, mobile site, application. Какие системы аналитики будете использовать для отслеживания источников привлеченного трафика и конверсий?
8 | 2. Как и где можем свести данные по источникам привлечения трафика и конверсиям? Какие модели атрибуции используем для click и view конверсий?
9 | 3. Составьте прототип регулярной отчетности. Опишите, какие метрики вы будем использовать и почему? Какую информацию и откуда можно будет получать?
10 |
11 | **Формат предоставления результатов**
12 |
13 | На ваше усмотрение — документ, презентация, а может быть что-то ещё)
14 |
15 | Будем рады, если ответ будет на Google-диске. Проверьте, пожалуйста доступ к документу «доступен всем по ссылке». Или прикрепите задание вложением.
16 |
17 | Результат направлять ответственному рекрутеру - [mariya.kalinina@dodobrands.io](mailto:mariya.kalinina@dodobrands.io) (Мария).
18 |
19 | Также, вместе с результатами можете поделиться, насколько вам было интересно выполнять задание.
20 |
21 | **Срок выполнения задания: 3 календарных дня.**
22 |
23 | **Как будет оцениваться задание**
24 |
25 | - Пунктуальность и своевременность предоставления результатов;
26 | - Логика и структура представления результатов;
27 | - Общая грамотность, внимательность и пунктуальность;
28 | - Аналитические способности и умение выстраивать причинно-следственные связи;
29 | - Понимание сферы, практические навыки.
30 |
31 | Желаем успешного выполнения!
--------------------------------------------------------------------------------
/analytics/Driveback Аналитик/2018.02.06 - orders.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Driveback Аналитик/2018.02.06 - orders.xlsx
--------------------------------------------------------------------------------
/analytics/Driveback Аналитик/README.md:
--------------------------------------------------------------------------------
1 | ### Тестовое задание для Аналитика
2 |
3 | **Задание 1**
4 |
5 | Описать 10 причин расхождения количества транзакций в Google Analytics и CRM.
6 |
7 | **Задание 2**
8 |
9 | Описать возможные причины появления двух и более одинаковых товаров в одном рекламном блоке системы ретаргетинга Criteo.
10 |
11 | 
12 |
13 | **Задание 3**
14 |
15 | Предложите механику проведения A/B-теста и оценки результатов следующей гипотезы:
16 |
17 | - Отключение ретаргетинга во всех рекламных системах для лояльных посетителей сайта увеличит ROAS. Посетитель считается лояльным, если он сделал переход на сайт из email-рассылки 3 и менее недель назад.
18 |
19 | **Задание 4\***
20 |
21 | Показать, что вероятность совершить следующую покупку тем выше, чем меньше времени прошло с предыдущей.
22 |
23 | - [Скачать DataSet](2018.02.06%20-%20orders.csv)
24 |
25 | [Результат](2018.02.06%20-%20orders.xlsx)
26 |
27 | **Задание 5\*\***
28 |
29 | Написать SQL-запрос, который преобразует таблицу с хитами в таблицу с сеансами.
30 |
31 | - [Определение сеанса](https://support.google.com/analytics/answer/2731565?hl=ru)
32 | - [Скачать DataSet](2018.02.06%20-%20hits.csv)
33 | - Для написания запроса мы рекомендуем воспользоваться сервисом Google BigQuery. Платформа Google Cloud бесплатно предоставляет мощности на сумму в $300.
--------------------------------------------------------------------------------
/analytics/Driveback Аналитик/media/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Driveback Аналитик/media/1.png
--------------------------------------------------------------------------------
/analytics/FriendsOnly Продуктовый Аналитик/README.md:
--------------------------------------------------------------------------------
1 | [https://recondite-diadem-987.notion.site/FriendsOnly-Product-Analytics-92b41f7baa3d4575b5e77cd4ffc2c6d9](https://recondite-diadem-987.notion.site/FriendsOnly-Product-Analytics-92b41f7baa3d4575b5e77cd4ffc2c6d9)
2 |
3 | # FriendsOnly | Product Analytics. Тестовое
4 |
5 | Привет!
6 |
7 | В процессе звонка мы затрагивали кусками метрики и некоторые фичи, но мне хочется структурированности и порядка, поэтому продолжим. Задавай мне любые вопросы в телеграм @sorokoumov. Удачи!
8 |
9 | Обращу твое внимание, что мы не ждем, что задание будет выполняться много часов и это будет идеальная работа. Нам прежде всего интересна логика мышления, системность, ход мысли и целостность результата.
10 |
11 | Давай представим как бы ты анализировал направление потребителей контента.
12 |
13 | Они приходят на платформу смотреть видео и общаться в чате. Чтобы смотреть некоторые видео или получать эксклюзивный контент в чате (бесплатно, или за деньги) потребитель должен быть подписан на автора / продакшн. Контент бывает разных типов (фото, видео, аудио, трансляции и прочие) и категорий (мужчины, женщины. виды увлечений, параметры модели.)
14 |
15 | ### Метрики и события
16 |
17 | 1. Предложи на какие метрики продукта и направления потребителей контента стоит смотреть и как они связаны друг с другом.
18 | 2. Объясни почему выбрал именно эти метрики, ключевые и вторичные.
19 | 3. Опиши логику сборки этих метрик, какие данные нужны, какие формулы расчёта использовали бы. Хорошим решением было бы приземлить на продукт, а не просто привести пример расчета показателя.
20 | 4. Дополнительно будет здорово описать, как вы представляете сбор данных (какие события/данные нужны для построения метрик, как они будут храниться, в каком формате, в какой архитектуре)
21 |
22 | ### Задача с данными
23 |
24 | В файле csv представлен сэмпл транзакций за февраль 2020 года.
25 |
26 | Необходимо с помощью любого языка (SQL/Python/R/…) описать и проанализировать массив, сделать выводы из полученных данных.
27 |
28 | К результатам нужно приложить скрипты, с помощью которых был произведен анализ.
--------------------------------------------------------------------------------
/analytics/Genius Sport Reporting Analyst/2020.xlsx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:1b65bf1c1c1bdb0de57ddae3077a0243706cd02ae19c9edc3c787ae11c8e02b8
3 | size 560394
4 |
--------------------------------------------------------------------------------
/analytics/Genius Sport Reporting Analyst/2021.xlsx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:6c2e5a4fbfba09c2a19042c1c6193aae0e7423334fd15025ece8a908d8441f1e
3 | size 596820
4 |
--------------------------------------------------------------------------------
/analytics/Genius Sport Reporting Analyst/2022.xlsx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:b5a237f5a09ed16c77b2984e4e8c48e7415201eaf4ae491fc405bb6d6bbe074f
3 | size 599982
4 |
--------------------------------------------------------------------------------
/analytics/Genius Sport Reporting Analyst/Practical test-new - 2 Part.pbix:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:4e9d9955533a5bcc5abc95699993049255acae03f156bde5954a1ef5c2cb9412
3 | size 2602052
4 |
--------------------------------------------------------------------------------
/analytics/Happy Games Studio Аналитик Данных/README.md:
--------------------------------------------------------------------------------
1 | Для выполнения данного задания предлагается использовать следующую структуру данных:
2 |
3 | ● Таблица "users" с полями: id, name, email, created_at
4 | ● Таблица "orders" с полями: id, user_id, total_price, created_at
5 | ● Таблица "order_items" с полями: id, order_id, product_name, price, quantity
6 |
7 | В ответе пришлите имя и версию используемой бд, дамп структуры базы, а также запросы для заполнения тестовыми данными, в работе строк должно быть не менее 1 млн в каждой таблице.
8 | Ответ должен представлять из себя SQL запрос с пояснением. По желанию можете дополнить ваш ответ плохим вариантом запроса также с объяснением.
9 |
10 | Запросы:
11 | 1. Найти общее количество заказов каждого пользователя, который сделал более 10 заказов.
12 | 2. Найти средний размер заказа для каждого пользователя за последний месяц.
13 | 3. Найти средний размер заказа за каждый месяц в текущем году и сравнить его с средним размером заказа за соответствующий месяц в прошлом году.
14 | 4. Найти 10 пользователей, у которых наибольшее количество заказов за последний год, и для каждого из них найти средний размер заказа за последний месяц.
--------------------------------------------------------------------------------
/analytics/Home Credit Bank Руководитель Отдела Аналитики /media/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Home Credit Bank Руководитель Отдела Аналитики /media/1.png
--------------------------------------------------------------------------------
/analytics/Home Credit Bank Руководитель Отдела Аналитики /media/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Home Credit Bank Руководитель Отдела Аналитики /media/2.png
--------------------------------------------------------------------------------
/analytics/Home Credit Bank Руководитель Отдела Аналитики /media/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Home Credit Bank Руководитель Отдела Аналитики /media/3.png
--------------------------------------------------------------------------------
/analytics/Home Credit Bank Руководитель Отдела Аналитики /media/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Home Credit Bank Руководитель Отдела Аналитики /media/4.png
--------------------------------------------------------------------------------
/analytics/Home Credit Bank Руководитель Отдела Аналитики /media/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Home Credit Bank Руководитель Отдела Аналитики /media/5.png
--------------------------------------------------------------------------------
/analytics/Home Credit Bank Руководитель Отдела Аналитики /media/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Home Credit Bank Руководитель Отдела Аналитики /media/6.png
--------------------------------------------------------------------------------
/analytics/Kaspi.kz продуктовый аналитик/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Kaspi.kz продуктовый аналитик/.DS_Store
--------------------------------------------------------------------------------
/analytics/Kaspi.kz продуктовый аналитик/7c91b07c-59b9-4a94-82b2-d7cd6c49ebc4_Weekend_Offer_для_продуктовых_аналитиков__тестовое_задание_.pdf:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:da6340f63b9c7aaaef629f7f27046abce581256281c71cea60eeae3c0ada8c0b
3 | size 838387
4 |
--------------------------------------------------------------------------------
/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Picture11111.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Picture11111.png
--------------------------------------------------------------------------------
/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Screen_Shot_2022-08-25_at_3.00.52_PM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Screen_Shot_2022-08-25_at_3.00.52_PM.png
--------------------------------------------------------------------------------
/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Screen_Shot_2022-08-26_at_5.26.59_PM 1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Screen_Shot_2022-08-26_at_5.26.59_PM 1.png
--------------------------------------------------------------------------------
/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Screen_Shot_2022-08-26_at_5.26.59_PM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Screen_Shot_2022-08-26_at_5.26.59_PM.png
--------------------------------------------------------------------------------
/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Screen_Shot_2022-08-27_at_10.29.55_AM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Screen_Shot_2022-08-27_at_10.29.55_AM.png
--------------------------------------------------------------------------------
/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Screen_Shot_2022-08-31_at_3.08.14_PM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Screen_Shot_2022-08-31_at_3.08.14_PM.png
--------------------------------------------------------------------------------
/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Untitled 1.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Untitled 1.jpeg
--------------------------------------------------------------------------------
/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Untitled 2.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Untitled 2.jpeg
--------------------------------------------------------------------------------
/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Untitled 3.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Untitled 3.jpeg
--------------------------------------------------------------------------------
/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Untitled.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/Untitled.jpeg
--------------------------------------------------------------------------------
/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/slq2-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/slq2-1.png
--------------------------------------------------------------------------------
/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/sql3-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Kaspi.kz продуктовый аналитик/Weekend Offer для продуктовых аналитиков – тестово b99d51311f1b4a77a3e19f797d680ebb/sql3-3.png
--------------------------------------------------------------------------------
/analytics/MediaScope Аналитик Данных/MediaScope – дата аналитик - Тестовое xn--80aalfgj8a.xlsx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:c2e53ee2516a5291b5c1ab3bd6657d2bc42e762b31d9d18ecb4e1e58c729f2a2
3 | size 6955934
4 |
--------------------------------------------------------------------------------
/analytics/MediaScope Аналитик Данных/README.md:
--------------------------------------------------------------------------------
1 | ## Описание:
2 | На вкладке **data** приведены сессии просмотра телеканалов респондентами
3 |
4 | ## Задание (анализ данных):
5 | Загрузить датасет в pandas dataframe и при необходимости предобработать
6 | После всестороннего анализа данных описать выявленные особенности телепотребления
7 |
8 | ## Задание (обработка данных)
9 | Необходимо построить почасовую динамику в течение дня.
10 | Обращаем внимание, что сессию 15:45-17:08 логично учитывать в трех часовых интервалах - 15:00-16:00, 16:00-17:00, 17:00-18:00
11 |
12 | ## Задание (Tableau)
13 | Сделать дашборд с ключевыми выводами
14 |
15 | ## Ожидаемый результат:
16 | На выходе мы бы хотели получить
17 | - jupyter notebook с написанным кодом и текстовыми выводами с интерпретацией полученных результов
18 | - ссылку на дашборд в Tableau
--------------------------------------------------------------------------------
/analytics/MediaSoft/README.md:
--------------------------------------------------------------------------------
1 | # Тестовое задание
2 |
3 | **Привет, мы — MediaSoft.team!**
4 | Желаем успехов при выполнении нашего тестового :)
5 | Будут вопросы — пиши на job@mediasoft.team
6 |
7 | ## Задача:
8 |
9 | Мобильное клиент-серверное приложение «Список
10 | покупок в магазинах».
11 |
12 | ## Необходимо описать:
13 | 1. Бизнес-логику мобильного приложения (использовать любую удобную нотацию моделирования бизнес-процессов).
14 | 2. Основные функции данного приложения (список должен быть составлен в порядке убывания важности функций для пользователя).
15 | 3. Процесс синхронизации данных между клиентом и сервером (добавление и удаление списка, наполнение и редактирование списка, покупка/«откупка продукта» и т.д.). Представить все в диаграммах, API методах и других представлениях.
16 | 4. Подготовить прототип одного из экранов мобильного приложения и описать пользовательский интерфейс для данного экрана (например, покупка товара).
17 | 5. Подготовить подробное описание функции покупки товара, которую можно было бы использовать в качестве постановки задачи для разработки (помимо текстового описания использовать UML диаграммы, указать используемые API методы, передаваемые и получаемые параметры, описать процесс хранения информации о покупках пользователя).
18 | 6. Основные, на ваш взгляд, сложности разработки такого приложения. Вопросы, возникшие при выполнении тестового задания, которые вы бы задали заказчику.
--------------------------------------------------------------------------------
/analytics/Nortas Analitics Аналитик данных/README.md:
--------------------------------------------------------------------------------
1 | Ссылка для подключения к данной таблице: [Google Sheets](https://docs.google.com/spreadsheets/d/e/2PACX-1vTaZTXesndaxRu6m4tqpxYwiDCUk-jRH4NhGDK0kPjLDDP8cGIukBwZi5Yzz5akINte0RoHqWZc-mA7/pub?output=xlsx)
2 |
3 | **ВНИМАНИЕ!!!**
4 | - **Запрещено создавать новые столбцы в таблицах и новые таблицы, необходимо обойтись формулами DAX.**
5 | - **Модифицировать таблицы в Power Query запрещено. Разрешено создать новую таблицу только для создания воронки конверсии в этап.**
6 | - В Power Query разрешается менять формат и использовать первую строку, как заголовок.
7 | - Если вам не удалось подключиться к таблице, используйте любое другое решение для загрузки данных в Power BI (PBI).
8 | - По завершению, необходимо отправить результат работы в формате `.pbix`.
9 |
10 | ## Задача
11 |
12 | Создать из данных текущей Google таблицы следующее:
13 |
14 | ### Таблица активности клиентов (Визуализация "Матрица")
15 | - **Строка**: Месяц
16 | - **Столбцы**:
17 | - **Количество потенциальных клиентов** — потенциальным считается клиент, который не совершал покупок (покупка считается совершённой, если сделка попала на этап "Оплата получена").
18 | - **Количество новых клиентов** — новым считается клиент, первый раз совершивший покупку в этом месяце (покупка считается совершённой, если сделка попала на этап "Оплата получена").
19 | - **Количество активных клиентов** — активным считается клиент, который совершил покупку в этом месяце и в период X прошлых дней совершил минимум 2 покупки (X дней задаётся срезом параметра от 7 до 60).
20 | - **Количество пассивных клиентов** — пассивным считается клиент, который совершил покупку в этом месяце и в период X прошлых дней совершил 1 покупку.
21 | - **Количество вернувшихся клиентов** — вернувшимся считается клиент, который совершил покупку в этом месяце и в период X прошлых дней не совершал покупки.
22 | - **Количество потерянных клиентов** — потерянным считается клиент, который не совершал покупок последние X дней.
23 |
24 | ### Воронка конверсии в этап (Визуализация "Воронка")
25 | Обратите внимание, сделка по данным не проходила некоторые этапы, но фактически она проходит их всех. Недостающие данные для отчёта необходимо достроить.
26 | - **Категория**: Этап сделки
27 | - **Значение**: Конверсия этапа сделки
28 |
29 | ### Таблица суммы товаров (Визуализация "Матрица")
30 | - **Строка**: Месяц
31 | - **Столбцы**:
32 | - **Сумма товаров новых клиентов**
33 | - **Сумма товаров активных клиентов**
34 | - **Сумма товаров пассивных клиентов**
35 | - **Сумма товаров вернувшихся клиентов**
36 |
37 | ### Таблица суммы товаров (Визуализация "Матрица")
38 | - **Строка**: Этап
39 | - **Столбец**:
40 | - **Среднее дней на этап** — среднее количество дней, которое требуется для перехода с прошлого этапа на текущий.
41 |
42 | ### Срезы, которые влияют на все таблицы
43 | - **Срез**: Менеджер - Таблица "Сделки"
44 | - **Срез**: Название товара - Таблица "Товар"
45 |
--------------------------------------------------------------------------------
/analytics/Nortas Analitics Аналитик данных/Копия Копия NA! Тестовое задание Power BI.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Nortas Analitics Аналитик данных/Копия Копия NA! Тестовое задание Power BI.xlsx
--------------------------------------------------------------------------------
/analytics/Ozon/Тестовое задание аналитику BX_.docx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:422dcfb6c88a65c5610c4070b1ae36fa3d32dc7417b37374caf9a04f90264161
3 | size 948358
4 |
--------------------------------------------------------------------------------
/analytics/Ozon/Тестовое задание_ОЗОН.pdf:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:731a2a0d6da9ad50c5c3aa8a6ff724c58067bf95e55159c7b9790c034b2ff4d9
3 | size 958497
4 |
--------------------------------------------------------------------------------
/analytics/README.docx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:46862fff791a0d774b852e14bffd45b5359624300e9e39651e52efeccf8af3aa
3 | size 7079
4 |
--------------------------------------------------------------------------------
/analytics/Realweb Camp Analytics/Realweb summer_camp_data.csv:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:646aba80861eed4c0f73cf8a1082d3ba228a7d60db4e53a394fd3509922f5b89
3 | size 5007384
4 |
--------------------------------------------------------------------------------
/analytics/Rekor Data Engineer/Incidents SQL question (2).pdf:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:f8e08b12dacecb18039fb7ae918a3e8d3e5377214849df80a6f4ee9027ac411e
3 | size 130116
4 |
--------------------------------------------------------------------------------
/analytics/Rekor Data Engineer/de test.zip:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:1c4940aff3195f6615a979948ab908bc67c4d01a79ae970fbbf8dc6efeb36267
3 | size 1302131
4 |
--------------------------------------------------------------------------------
/analytics/Samsung Data Manager/Data manager (1).docx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:a353f47bb53fbe56db6e5f9d539442031fc37b7aea4fe5f4dfc17aea8d941940
3 | size 96082
4 |
--------------------------------------------------------------------------------
/analytics/Skypro Data Analyst/README.md:
--------------------------------------------------------------------------------
1 | # Тестовое задание
2 |
3 | ## Аналитик данных
4 |
5 | ## Как заполнить ответ
6 | 1. Создай копию этого [документа](ТЗ%20_%20Data%20Analyst%20Skypro%20.docx) (файл → создать копию)
7 | 2. Заполни ответы и пришли рекрутеру ссылку, открытую на чтение (настройки доступа).
8 |
9 | Ограничений по размеру и формату ТЗ нет.
10 |
11 | Вы работаете аналитиком в компании, которая занимается онлайн-образованием и предлагает различные курсы на своем веб-сайте. Ответьте на следующие вопросы:
12 |
13 | • Какие основные продуктовые метрики вы бы использовали для оценки эффективности курсов? Почему?
14 | • Как вы бы измеряли удержание и лояльность пользователей? Какие факторы могут влиять на них?
15 | • Как вы бы оценивали конверсию пользователей из просмотра каталога курсов до оплаты и прохождения курса? Какие способы повышения конверсии вы бы предложили?
16 | • Как вы бы проводили A/B-тест для сравнения двух версий веб-сайта с разными элементами дизайна и юзабилити? Какие метрики и статистические методы вы бы использовали для оценки результатов?
17 |
18 | ## 1 Задание
19 | Дана таблица "orders" со следующими столбцами: order_id (идентификатор заказа), course_id (идентификатор курса), user_id (идентификатор пользователя), order_date (дата заказа), price (цена заказа).
20 | Напишите SQL-запрос, который возвращает сумму выручки по каждому курсу за последний месяц.
21 |
22 | ## 2 Задание
23 | Дана таблица "users" со следующими столбцами: user_id (идентификатор пользователя), name (имя пользователя), email (электронная почта пользователя), registration_date (дата регистрации).
24 | Напишите SQL-запрос, который возвращает количество новых пользователей, зарегистрировавшихся в каждый день за последние 7 дней.
25 |
26 | ## 3 Задание
27 | Даны две таблицы: "courses" (course_id - идентификатор курса, course_name - название курса) и "ratings" (rating_id - идентификатор оценки, course_id - идентификатор курса, user_id - идентификатор пользователя, rating - оценка курса от 1 до 5).
28 | Напишите SQL-запрос, который возвращает название курса и среднюю оценку для каждого курса с количеством оценок больше 10.
29 |
30 | ## 4 Задание
31 | Дана таблица "user_courses" со следующими столбцами: user_id (идентификатор пользователя), course_id (идентификатор курса), start_date (дата начала курса), end_date (дата окончания курса).
32 | Напишите SQL-запрос, который возвращает количество активных пользователей (пользователей, у которых есть хотя бы один текущий курс) на определенную дату.
33 |
34 | ## 5 Задание
35 | Дана таблица "events" со следующими столбцами: event_id (идентификатор события), user_id (идентификатор пользователя), event_type (тип события, например: 'registration', 'course_purchase', 'course_complete'), event_date (дата события).
36 | Напишите SQL-запрос, который возвращает количество пользователей, которые совершили покупку курса, но не завершили его в течение 30 дней после покупки.
37 |
38 | ## Как к тебе обращаться?
39 | ФИ:
40 | Почта:
41 | Телефон:
42 |
43 | ## Чего ждать дальше?
44 | Мы всё проверим и вернемся с ответом на почту в рамках 2-3 рабочих дней.
45 |
--------------------------------------------------------------------------------
/analytics/Skypro Data Analyst/ТЗ _ Data Analyst Skypro .docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Skypro Data Analyst/ТЗ _ Data Analyst Skypro .docx
--------------------------------------------------------------------------------
/analytics/Teikametrics Analyst/Paid Media _ Data Set for Analytical Exercises - 2023 (1) (2).xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Teikametrics Analyst/Paid Media _ Data Set for Analytical Exercises - 2023 (1) (2).xlsx
--------------------------------------------------------------------------------
/analytics/Teikametrics Analyst/README.md:
--------------------------------------------------------------------------------
1 | ## One-Sheeter for Analyst Exercise
2 |
3 | *Ad metrics*
4 |
5 | **Impressions**: the number of times your ad is viewed, regardless of shopper interaction
6 | **Clicks**: a consumer clicking on an ad
7 | **Cost**: the cost accrued from clicks on ads
8 | **Orders**: a consumer purchase, after an ad click
9 | **Units**: the number of products purchased
10 | **Sales**: revenue generated from purchases after an ad click
11 | **Click-through-rate (CTR)**: Clicks divided by impressions; the ratio of consumers who click on your
12 | ad to the number of consumers who viewed it.
13 | **Cost per click (CPCs)**: Cost divided by click; the average price of each click.
14 | **Conversion rate (CVR)**: Orders divided by clicks; the ratio of conversions (orders) to traffic to the
15 | product page.
16 | **Average order value (AOV)**: Sales divided by orders; the average value of each order.
17 | **Sales per click (SPC)**: Sales divided by clicks; the average value of each click.
18 | **ACoS**: Ad cost divided by ad sales (the inverse of ROAS); an efficiency metric.
19 |
20 | **_Keyword categorization – Brand v. Non-Brand_**
21 | Brand and non-brand, or unbranded, are the two major segments into which we categorize keywords.
22 | Keywords containing the brand name, including misspellings, are considered “brand”, while all other
23 | keywords, including competitor names, are categorized as “non-brand,” “unbranded” or “generic.”
24 |
25 | Performance, specifically efficiency (ACoS), between the two categories can vary notably. Brand terms
26 | carry a higher efficiency (lower ACoS), since the user has already determined what they are looking to
27 | purchase and who they are looking to purchase from, and therefore have a higher likelihood of
28 | conversion. Non-brand terms signify the user has not yet determined the brand they want to buy from,
29 | are usually not as far along in the journey to purchase, therefore non-brand terms carry a lower
30 | conversion rate. Non-brand traffic constitutes a majority of search (impression and click) volume for
31 | accounts. Competitor search terms, still considered non-brand, carry the lowest conversion rate.
32 | Competitor search terms are an effort to change the mind of the consumer, who has already identified a
33 | preferred brand, in order to acquire market share. While competitor search terms are usually more
34 | inefficient than even average non-brand performance, they serve as a tool to grow market share through
35 | acquisition of new customers.
36 |
37 | While brand terms carry sales volume at a lower ad cost, available volume of searches is lower than non-
38 | brand and can cannibalize traffic arriving to purchase through organic methods.
--------------------------------------------------------------------------------
/analytics/Tinkoff Product Analyst/README.md:
--------------------------------------------------------------------------------
1 | 1) Пете нравятся числа {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}, а Васе: {3, 6, 9, 12, 15, 18, 21, 24, 27, 30}. Известно, что если Коле нравится некоторое натуральное число, то оно нравится и Пете. А если некоторое натуральное число нравится Васе, то Коле оно точно не нравится.
2 | Укажите наибольшее возможное количество чисел, которые нравятся Коле.
3 |
4 | 2) В море плавают ледники трех разных размеров. Маленьких ледников в 5 раз больше, чем больших, а средних в 4 раза больше, чем больших. Вероятность того, что на леднике лежит тюлень, равна 0.6 для маленького ледника, 0.7 для среднего и 0.9 для большого. Найдите вероятность того, что ледник, выбранный наугад из всех ледников в море с тюленем.
5 | Введите полученный ответ, умноженный на 100 и округлённый по правилам математики.
6 |
7 | 3) У Пети есть доска, на левой половине написано натуральное число. На правой он хочет записать минимальную чётную его цифру (Предположим что такая есть в записи этого числа). Он решил действовать следующим образом - сначала записать справа последнюю цифру числа. Затем он стирает последнюю цифру числа слева и если она чётная и меньше, чем цифра, записанная справа - пишет её вместо того, что уже записано справа. Так он действует до тех пор, пока не сотрёт всё число слева.
8 | а) Что он получит, если изначально на левой половине было число 18543?
9 | б) Чему равна предпоследняя цифра числа, которое даёт остаток 23 при делении на 25, и про которое известно, что Петин алгоритм сработал неверно?
10 | В ответе укажите сумму чисел, являющихся ответами на пункты а) и б)
11 |
12 | 4) Петя с собакой пошли в магазин. Петя идёт с постоянной скоростью 6 км/ч. Собака выбегает из дома на минуту позже, догоняет и обгоняет хозяина со скоростью 12 км/ч. Дальше она действует так: бежит со скоростью 12 км/ч до тех пор, пока не окажется на 100 метров впереди хозяина; в этот момент она замедляется до 3 км/ч и идёт с этой скоростью, пока хозяин не окажется на 100 метров впереди, после чего снова начинает бежать со скоростью 12 км/ч. Так она действует до тех пор, пока они не дойдут до магазина. Петя заметил, что когда он входил в магазин, собака как раз догнала его во второй раз.
13 | Сколько времени занял его путь? Ответ укажите в секундах.
14 |
15 | 5) У Пети на уборку в комнате всегда уходил час. Но потом он узнал о принципе Парето: 20% усилий дают 80% результата. В соответствии с этим принципом, он решил сначала убрать 80% бардака за 20% обычного времени уборки, потом убрать 80% оставшегося бардака за 20% того времени, которое это должно было занять, и повторять это до тех пор, пока комната не будет убрана. Считается, что бардак в комнате Пети равномерный, то есть на оставшиеся после первой итерации 20% бардака в обычных условиях Петя бы потратил 20% времени.
16 | Укажите сколько минут сэкономит Петя,
17 | начав убираться таким образом?
--------------------------------------------------------------------------------
/analytics/Vizor Data Analytics/README.md:
--------------------------------------------------------------------------------
1 | ## Тестовое задание на позицию Data Analytic (Marketing)
2 |
3 | Тестовое задание состоит из 3 блоков. Выполните хотя бы по одному заданию из каждого блока (аргументируйте выбор). Для выполнения 2 и третьего блока используйте приложенные csv c тестовыми данными. В данных могут присутствовать ошибки/аномалии.
4 |
5 | **Теоретический блок.** Дайте развернутый ответ на вопрос.
6 | 1. Выход нового версии приложения запланирован через 2 недели. Какие метрики вы бы использовали для оценки релиза. Сколько нужно времени для принятия решения о успешном или провальном релизе?
7 |
8 | 2. В ходе анализа данных, вы замечаете в продукте снижение ARPU для страны AU, по одной месячной когорте. Какие ваши дальнейшие действия?
9 |
10 | 3. Ваше приложение интегрировано с MMP. Вам необходимо сформировать дашборд для ежедневного мониторинга приложения. Какие метрики вы вынесите на этот дашборд?
11 |
12 | **Практический блок (SQL).** Приложите скрипты и пример результата выполнения
13 | 1. Создайте скрипт-агрегацию в разрезе недельных когорт, платформы, медиаисточника, для недель
14 | 1-7
15 | 8-14
16 | 15-21
17 | 22-end
18 | по расчету следующих метрик: установки, доход
19 |
20 | 2. Рассчитайте реальную конверсию из клика в установку для стран (CA, IT)
21 |
22 | 3. Определите номер кампании имеющую самый низкий CPI и пользователей с самым высоким чеком в период с 20.01.2021 по 1.02.2021
23 |
24 | **Практический блок (Аналитика).** – Приложение к сообщению в телеграмме Приложите графики, примеры расчетов, исходные скрипты или workbooks.
25 | 1. Проведите анализ окупаемости трафика для стран (RU, IN, MX, AU)
26 | 2. Проведите анализ оценки платежного поведение когорты 1.01.2021-14.01.2021 (метрики для оценки и визуализации выберите на свое усмотрение). Сделайте выводы по полученным данным.
27 | 3. Рассчитайте базовые метрики для когорты 8-14.01.2021:
28 | • cost
29 | • installs
30 | • buyers 3 - плательщики 3-го дня когорты
31 | • buyers
32 | • CPM
33 | • IPM
34 | • CPI
35 | • ARPU_7
36 | • ARPPU_7
37 | • ARPU
38 | • cost per buyer 1,3,5,7,14 - цена за плательщика на указанный день когорты
39 | • ROAS 1,3,5,7,14,30 - фактическая окупаемость на указанный день когорты
40 |
41 | Описание данных:
42 |
43 | ads_data.csv
44 | start_date, - дата активности рекламной кампании
45 | campaign_id, - идентификатор рекламной кампании
46 | ad_set_id, - идентификатор группы креативов
47 | ad_id, - идентификатор креатива
48 | cpm,
49 | ctr,
50 | spend,
51 | clicks,
52 | impressions,
53 | breakdown_set, - тип разреза данных (общий или ГЕО)
54 | breakdowns,
55 | platform
56 |
57 | user_data.csv
58 | attributed_touch_time, - дата и время атрибуции касания в установку
59 | install_time, - дата и время атрибуции установки
60 | event_time, - дата события
61 | event_name, - тип события
62 | event_revenue_usd, - сумма платежа, если это покупка в приложени
63 | media_source, - источник установки
64 | channel, - канал установки
65 | campaign_id, - идентификатор рекламной кампании
66 | adset_id, - идентификатор рекламной кампании
67 | ad_id, - идентификатор группы креативов
68 | country_code, - страна
69 | user_id - идентификатор пользователя
--------------------------------------------------------------------------------
/analytics/WhoIsBlogger (WIB), junior data analyst/README.md:
--------------------------------------------------------------------------------
1 | У вас SQL база с таблицами:
2 | 1) Users(userId, age)
3 | 2) Purchases (purchaseId, userId, itemId, date)
4 | 3) Items (itemId, price).
5 |
6 | Напишите SQL запросы для расчета следующих метрик:
7 |
8 | А) какую сумму в среднем в месяц тратит:
9 | - пользователи в возрастном диапазоне от 18 до 25 лет включительно
10 | - пользователи в возрастном диапазоне от 26 до 35 лет включительно
11 | Б) в каком месяце года выручка от пользователей в возрастном диапазоне 35+ самая большая
12 | В) какой товар обеспечивает дает наибольший вклад в выручку за последний год
13 | Г) топ-3 товаров по выручке и их доля в общей выручке за любой год
14 |
15 | Будет здорово, если ваше решение оформлено в виде работающего кода и основательно протестировано на придуманных данных (код для наполнения данными тоже приложите).
16 | Для тестирования можно использовать онлайн-редактор [https://sqliteonline.com/](https://sqliteonline.com/)
17 | Предпочтительный диалект - PostgreSQL, но можете использовать любой из доступных.
--------------------------------------------------------------------------------
/analytics/Wolt Аналитик Данных/README.md:
--------------------------------------------------------------------------------
1 | # Assignment for Data Analyst
2 |
3 | We are delighted to continue the recruitment process with you. Now it is your time to shine.
4 | We’ve prepared a task for you so that you can prove your skills and to let us understand how
5 | you are approaching problems in general. Good luck!
6 |
7 | ## Task
8 | Attached to this message you’ll find a CSV file with some machine-generated user data of a
9 | service like Wolt. Every row of the dataset represents one customer who has registered to use
10 | the service during September 2019 and either has or hasn’t made orders during the time from
11 | then and October 2020.
12 |
13 | Your assignment is to
14 |
15 | 1) Familiarise yourself with the dataset. Here you should show us your excellent exploratory
16 | data analysis skills.
17 |
18 | 2) Provide us with a user segmentation that could be utilised by our marketing team to
19 | reactivate different kinds of users. Provide also recommendations on how to use the
20 | segmentation for this purpose. Remember to justify your segmentation approach so that we
21 | understand why the way you did it is better than an arbitrary solution by a non-data analyst
22 | who can do some slicing-and-dicing with the data.
23 |
24 | ## Our expectations
25 | At Wolt we use Python or R for notebooks and we expect you to return the rendered notebook
26 | alongside the code used for the analysis. Make sure we can run and view your solution on
27 | MacOS and Linux.
28 |
29 | In addition to the notebook used to solve the assignment, please include a separate supporting
30 | presentation that highlights the main steps of the analysis and communicates your findings. As
31 | a further guideline, the presentation should be self-sufficient for us to follow your thoughtprocess when solving the assignment: Please explain why you decided to go with this
32 | particular approach and what could be the pros and cons of applying it.
33 |
34 | Please note that time spent on the assignment may vary but it normally takes around 8 hours
35 | to complete. We hope you will return the assignment within 7 calendar days of receiving it.
36 |
37 | Best of luck! We can’t wait to see how you approach challenges like these.
38 | 👋
--------------------------------------------------------------------------------
/analytics/Wolt Аналитик Данных/dataset_for_analyst_assignment_20201120.csv:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:5c085f4a9c11e9cf9a515ac3c21f1ea3443c8a9e430d0842a7a977522e82c83e
3 | size 5343188
4 |
--------------------------------------------------------------------------------
/analytics/X5 Аналитик Данных (стажировка)/README.md:
--------------------------------------------------------------------------------
1 | ## Python
2 |
3 | ## Задача 1
4 | Дан целочисленный массив. Необходимо вывести true, если есть повторения и false, если нет.
5 |
6 | Input: [1, 2, 3, 1]
7 | Output: True
8 |
9 | Input: [1, 2, 3, 4]
10 | Output: False
11 |
12 | **Решение:**
13 | ```
14 | nums = [1, 2, 3, 4, 4]
15 | def reps(nums):
16 | if len(set(nums)) != len(nums):
17 | return True
18 | else:
19 | return False
20 | ```
21 |
22 | ## Задача 2
23 | Дано число n. Вернуть факториал этого числа. Вызвать -1, если n не целочисленно, а так же если n отрицательно.
24 |
25 | Input: n = 5
26 | Output: 120
27 |
28 | Input: n = 0
29 | Output: 1
30 |
31 | **Решение:**
32 | ```
33 | def factorial(n):
34 | if isinstance(n, float) or n < 0:
35 | return -1
36 | elif n == 0:
37 | return 1
38 | else:
39 | result = 1
40 | for i in range(1, n+1):
41 | result *= i
42 | i + 1
43 | return result
44 | ```
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/analytics/Альфа Банк Продуктовый Аналитик/media/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Альфа Банк Продуктовый Аналитик/media/1.png
--------------------------------------------------------------------------------
/analytics/Альфа Банк Продуктовый Аналитик/media/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Альфа Банк Продуктовый Аналитик/media/2.png
--------------------------------------------------------------------------------
/analytics/Альфа Банк Продуктовый Аналитик/media/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Альфа Банк Продуктовый Аналитик/media/3.png
--------------------------------------------------------------------------------
/analytics/Альфабанк продуктовый аналитик/media/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Альфабанк продуктовый аналитик/media/1.png
--------------------------------------------------------------------------------
/analytics/Альфабанк продуктовый аналитик/media/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Альфабанк продуктовый аналитик/media/2.png
--------------------------------------------------------------------------------
/analytics/Альфабанк продуктовый аналитик/media/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Альфабанк продуктовый аналитик/media/3.png
--------------------------------------------------------------------------------
/analytics/Банк Открытие Продуктовый Аналитик/README.md:
--------------------------------------------------------------------------------
1 | # Тестовое задание.
2 |
3 | ## Продуктовая часть.
4 |
5 | **Задание 1.** Предложите 3 метрики первого уровня для мобильного и интернет-банка. Почему именно эти?
6 |
7 | **Задание 2.** Вам необходимо понять какие цели отслеживаются на странице [https://www.open.ru/cards/opencard?from=main_menu](https://www.open.ru/cards/opencard?from=main_menu) .
8 |
9 | • Опишите, какие цели уже отслеживаются.
10 | • Опишите, каким образом вы поймете отслеживаются ли цели на странице.
11 | • Какие цели на ваш взгляд необходимо отследить.
12 |
13 | **Задание 3.** Вы хотите повысить конверсию на странице https://www.open.ru/credit_cards/120days , для этого вы хотите провести А/Б тест. Опишите процесс проведения А/Б (подготовка, запуск, итоги). Приведите в пример гипотезы, на которые вы будете опираться при тестировании страниц.
14 |
15 | **Задание 4.** Вам необходимо добавить отслеживание события перевода по номеру карты в мобильном и интернет-банке через web инструменты (выберете один из: GA, Amplitude, Я.Метрика, AppMetrica или другой на свой выбор)
16 |
17 | • Опишите, как вы видите процесс реализации задачи от постановки задачи (вам) до внедрения.
18 | • Опишите ТЗ для разработчика мобильного банка.
19 | • Опишите ТЗ для разработчика интернет-банка.
20 |
21 | ## SQL.
22 |
23 | Дана таблица по вводу ОТП кодов клиентами.
24 |
25 | **Задача:** решить максимальное количество заданий используя SQL.
26 |
27 | 
28 |
29 | Поля таблицы:
30 | • **client_id** - номер клиента
31 | • **sessionId** – идентификатор сессии
32 | • **datetime** - дата время
33 | • **status** – статус ввода кода
34 | • **category** – текстовый код ОТП
35 |
36 | **Задание 1.** Показать категорию, по которой было введено наибольшее число кодов
37 |
38 | **Задание 2.** Добавить индикатор, который будет выделять следующие значения:
39 | • Если otp для категории платежей (payment), то - 1
40 | • Если otp для категории переводов (transfer), но не для переводов с использованием счетов (acc), то - 2
41 |
42 | Все остальные заявки не должны попасть в результат выполнения запроса.
43 |
44 | **Задание 3.** Посчитать метрику Month-of-Month (прирост текущего месяца к предыдущему) по уникальным клиентам с кодами otp-login.
45 |
46 | **Задание 4.** Одним запросом сформируйте:
47 | • Количество успешно введённых ОТП кодов в разрезе категории кода ОТП
48 | • Долю каждой категории по убыванию
49 | • Количество с накопительным итогом
50 | • Общее количество введённых ОТП кодов
51 | • Последний отчётный месяц (полный месяц, от текущего)
52 |
53 | ## *Python – дополнительно.
54 |
55 | **Задание 5*.**
56 |
57 | Представьте решение заданий 1-3 с помощью методов библиотеки pandas (исходный файл загрузите как датафрейм). Пришлите решение в виде файла Jupyter Notebook или ссылкой на Datalore.
--------------------------------------------------------------------------------
/analytics/Банк Открытие Продуктовый Аналитик/media/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Банк Открытие Продуктовый Аналитик/media/1.png
--------------------------------------------------------------------------------
/analytics/Банк ренессанс кредит Аналитик/Банк Ренессанс Кредит Аналитик.docx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:8bd74ca7c5736c3d896ce153c5fb9a605cfbc98b7a8672cd80564f80465883d3
3 | size 20555
4 |
--------------------------------------------------------------------------------
/analytics/ВК Аналитик данных/README.md:
--------------------------------------------------------------------------------
1 | ## ЗАДАНИЕ.
2 |
3 | В файле находятся данные по показам и кликам рекламы одного рекламодателя в двух регионах.
4 |
5 | Описание данных:
6 |
7 | Device_id – уникальный идентификатор девайса отправителя события
8 | Device_type – тип девайса
9 | Datetime – время отправки события
10 | Ev_type – тип события (0 – показ, 1 – клик)
11 | Adv_type – тип рекламы
12 | Region_id – регион отправителя события
13 | Age – возраст отправителя события
14 | Gender – пол отправителя события (1 – женщины, 2 – мужчины)
15 |
16 | На основе имеющихся данных сформулируйте рекомендации для рекламодателя: какие дополнительные настойки нужно добавить в рекламные кампании, чтобы улучшить их эффективность (например, выставить таргетинги на отдельные группы пользователей, ограничить время показа рекламы и т.д.).
17 |
18 | В ходе исследования используйте разные подходы: например, кластеризуйте юзеров или обучите классификатор для целевого действия.
19 |
20 | В качестве решения необходимо прислать код на python и рекомендации (с таблицами/графиками/т.п.).
--------------------------------------------------------------------------------
/analytics/ВК Одноклассники Продуктовая аналитика /AB_Test_Results (1).xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/ВК Одноклассники Продуктовая аналитика /AB_Test_Results (1).xlsx
--------------------------------------------------------------------------------
/analytics/ВК Одноклассники Продуктовая аналитика /README.md:
--------------------------------------------------------------------------------
1 | ## Типичная задача продуктового аналитика:
2 | Представь, что ты продуктовый аналитик в Instagram и отвечаешь за аналитику продукта Истории (Stories). Спустя несколько месяцев после его запуска тебя попросили собрать продуктовый дашборд про успешность запуска, первые результаты работы этого продукта и его влияния на весь продукт Instagram.
3 | Напиши, пожалуйста, метрики, которые бы ты отобразил на этом дашборде в порядке убывания важности (здорово если построишь пирамиду/иерархию метрик)
4 |
5 | ## Типичный А/В тест продуктового аналитика:
6 | На сайте запущен А/В тест с целью увеличить доход. В приложенном excel файле ты найдешь сырые данные по результатам эксперимента (user_id), тип выборки (variant_name) и доход, принесенный пользователем (revenue).
7 | Проанализируй результаты эксперимента и напиши свои рекомендации менеджеру.
8 | (приложи скрипт с помощью которого анализировал данные, желательно файл .ipynb на python)
9 |
10 | ## Обычная SQL задача 1
11 |
12 | 
13 |
14 | **Используя таблицы выше, напиши следующие SQL запросы:**
15 | a) Для каждого сотрудника найти его департамент, включая тех, у кого департамента нет
16 | b) Найти наибольшую зарплату по департаментам и отсортировать департаменты по убыванию максимальной зарплаты
17 |
18 | ## Обычная SQL задача 2
19 |
20 | 
21 |
22 | **Используя таблицу выше, напиши следующие SQL запросы:**
23 | a) Посчитай доход с женской аудитории (доход= сумма price*items)
24 | b) Сравни доход по группе мужчин и женщин
25 | c) Посчитай кол-во уникальных пользователей-мужчин, заказавших более чем три айтема (суммарно за все заказы).
26 |
27 | ## Не самая обычная SQL задача 3
28 |
29 | 
30 |
31 | **Каждый пользователь имеет набор транзакций с определенным временем. Используя таблицы выше, напиши НАИБОЛЕЕ ОПТИМАЛЬНЫЕ SQL запросы:**
32 | a) Выведи для каждого пользователя первое наименование, которое он заказал (первое по времени транзакции)
33 | b) Посчитай сколько транзакций в среднем делает каждый пользователь в течении 72х часов с момента первой транзакции
--------------------------------------------------------------------------------
/analytics/ВК Одноклассники Продуктовая аналитика /media/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/ВК Одноклассники Продуктовая аналитика /media/1.png
--------------------------------------------------------------------------------
/analytics/ВК Одноклассники Продуктовая аналитика /media/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/ВК Одноклассники Продуктовая аналитика /media/2.png
--------------------------------------------------------------------------------
/analytics/ВК Одноклассники Продуктовая аналитика /media/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/ВК Одноклассники Продуктовая аналитика /media/3.png
--------------------------------------------------------------------------------
/analytics/ВТБ Аналитик данных/README.md:
--------------------------------------------------------------------------------
1 | # Тестовое задание УЖЦК
2 |
3 | В данном тестовом задании предлагается выполнить несколько прикладных задач, связанных с псевдоданными УЖЦК.
4 |
5 | ### Описание данных
6 |
7 | В приложении к заданию есть файл database.db. Он представляет собой файл БД на фреймворке sqlite3. Синтаксис SQL, используемый в данной БД почти не отличается от ORACLE DB (более подробно можно почитать [тут](https://unetway.com/tutorial/sqlite-syntax).
8 | Запросы к базе можно сохранять сразу в pandas.Dataframe, используя следующий код:
9 | ```
10 | import pandas as pd
11 | import sqlite3 as sql
12 |
13 | query = 'SELECT * FROM pl LIMIT 5'
14 | con = sql.connect('database.db')
15 | df = pd.read_sql_query(sql = query, con=con)
16 | con.close()
17 |
18 | df
19 | ```
20 |
21 | | |client_id |segment |period |product |pl|
22 | |---|-----------|-----------|-------|-----------|--|
23 | |0 |yxwtZv530y |Массовый |p_1 |Кредит |0.374924|
24 | |1 |YFaxw7Fn7N |Массовый |p_1 |Кредит |1.419884|
25 | |2 |TIqbQo6hvx |Массовый |p_1 |Кредит |110.548341|
26 | |3 |r5EpnGGW6A |Стандартный |p_1 |Кредит |10.361832|
27 | |4 |mVQkt2IbTH |Массовый |p_1 |Кредит |108.225665|
28 |
29 | В базе данных хранится 2 таблицы: pl и campaign. Ключами для связи этих таблиц является поле client_id. В таблице pl находится информация о ЧОД (чистый операционный доход) от клиента с продуктом в разрезе периодов. В таблице campaign хранятся данные о прошедшей между отчетными периодами "p_1" и "p_2" маркетинговой кампании.
30 | Атрибутный состав таблицы pl:
31 | - client_id - id клиента
32 | - segment - сегмент клиента внутри СМБ(Средний и малый бизнес)
33 | - period - период расчета ЧОД банка от продукта, используемого клиентом
34 | - product - продукт
35 | - pl - ЧОД в тысячах рублей
36 |
37 | Пример: строка 0 на срезе выше - в периоде "p_1" за продукт "Кредит" с клиента "yxwtZv530y" массового сегмента банк заработал 0.374924 тыс. рублей.
38 |
39 | Если в каком-либо периоде информация о клиенте/продукте у клиента отсутствует, значит в этот период клиента в банке не было/клиент продуктом не пользовался.
40 |
41 | Атрибутный состав таблицы campaign:
42 | - client_id - id клиента
43 | - product - продукт кампании
44 | - response - статус отклика на предложение
45 | - manager_id - id менеджера, на которого назначен клиент
46 |
47 | ### Задание
48 |
49 | 1) Посчитать средний ЧОД по продуктам и количество клиентов с продуктом для каждого сегмента в разрезе периодов.
50 | 2) Посчитать средний ЧОД и количество клиентов в каждом сегменте в разрезе периодов.
51 | 3) Оценить отток клиентов с продуктов в периоде p_2.
52 | 4) Посчитать сумму ЧОД, привлеченную каждым менеджером в ходе маркетинговой кампании
53 | 5) Оценить эффективность маркетинговой кампании.
--------------------------------------------------------------------------------
/analytics/ВТБ Аналитик данных/database.db:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:907aa0cfa8e55ab334774e95ac492be14a203090605599771fc0e7b2f8abc4db
3 | size 6062080
4 |
--------------------------------------------------------------------------------
/analytics/Газпром/README.md:
--------------------------------------------------------------------------------
1 | # Мехфонд – цифровое решение для управления добычей
2 |
3 | ## РЕШАЕМАЯ ПРОБЛЕМА
4 | - Компания несет расходы из-за недоборов нефти и повышенного потребления э/энергии при работе скважины в неэффективном режиме
5 | - Отсутствие оперативной реакции на отклонения в режиме работы скважины (выход скважины на неэффективный режим)
6 |
7 | ## ЦЕЛЕВОЕ ВИДЕНИЕ
8 | - Мониторинг режима работы скважины в реальном времени с помощью датчиков, размещённых на скважине
9 | - Компания получает доход от бесперебойной работы скважины в эффективном режиме
10 |
11 | ## ПОЛЬЗОВАТЕЛИ
12 | - Операторы системы «Мехфонд»
13 | - Рабочие на скважине, получающие инструкции от оператора
14 |
15 | ## «ПОЛЬЗОВАТЕЛЬСКИЙ СЦЕНАРИЙ»
16 | 1. Выявление отклонения в работе скважины от эффективного режима.
17 | 2. Отправка аларма об отклонении оператору системы «Мехфонд».
18 | 3. Оператор реагирует на аларм и устанавливает причину её возникновения.
19 | 4. Оператор ставит необходимые мероприятия для возобновления эффективного режима работы скважины.
20 | 5. Рабочий на скважине получает инструкции от оператора по проведению мероприятия.
21 | 6. Рабочий проводит необходимое мероприятие.
22 | 7. Система фиксирует возвращение скважины к эффективному режиму работы.
23 |
24 | ## КПЭ
25 | - Сокращение недоборов нефти, тонн
26 | - Снижение затрат на потребление э/энергии, руб.
27 |
28 | ## Задание
29 | 1. Предположить дерево метрик, которое необходимо отслеживать команде продукта для мониторинга эффективности прохождения пользовательского сценария. Определить ключевые продуктовые метрики, обосновать свой выбор.
30 | 2. Связать продуктовые метрики с КПЭ продукта, объяснить как именно продуктовые метрики показывают достижение КПЭ продукта.
31 | 3. Предложить видение и структуру дашборда для команды продукта и для бизнес-заказчика. Создайте прототип дашборда в любом удобном для вас инструменте визуализации.
32 | 4. Необходимо направить выполненное задание в срок до 7 дней с момента получения.
33 |
34 | *Для задачи принимаем, что все необходимые данные есть и могут собираться в продукте.*
--------------------------------------------------------------------------------
/analytics/Газпром/тестовое задание ПА Газпром.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Газпром/тестовое задание ПА Газпром.pptx
--------------------------------------------------------------------------------
/analytics/Делимобиль/README.md:
--------------------------------------------------------------------------------
1 | ## Задание 1 (тех задание на проверку навыков программирования и построения правильного алгоритма)
2 |
3 | Есть таблица с данными о геолокации автомобиля, данные в нее попадают каждую минуту, но
4 | случаются пропуски в данных за какой-то интервал времени и частота меняется, при этом
5 | наполнение столбцов всегда полное.
6 |
7 | |Название поля |Тип поля |Описание поля|
8 | |--------------|---------|-------------|
9 | |Car_id |integer |Идентификатор машины|
10 | |Latitude |numeric |Широта|
11 | |Longitude |numeric |Долгота|
12 | |datetime |timestamp |Время замера|
13 |
14 | Напишите запрос SQL, или код на python, выводящий машину которая больше всего стояла
15 | без движения в течение дня
16 |
17 | ## Задание 2 (коммерческое)
18 |
19 | После нескольких неудачных ценовых нововведений в начале прошлого года в одном из регионов
20 | своей деятельности (когда после релиза нововведений, компания проседала как по выручке, так
21 | по поездкам и активным пользователям в данном регионе), бизнес пришёл к пониманию
22 | необходимости иметь априори знания о том, какая цена удовлетворяет клиента - по какой цене
23 | он будет продолжать пользоваться услугами компании, а по какой уже нет, т.е. об эластичности
24 | спроса по цене.
25 |
26 | **Предложите стратегию и механику эксперимента по эластичности с калькуляцией всех**
27 | **необходимых параметров для проведения успешного эксперимента.**
28 | • Как нужно построить правильно эксперимент, если пользователей, активно пользующихся услугами
29 | компании в данном регионе 10k
30 | • Какие данные о пользователях для этого необходимо собрать
31 | • На какие сегменты их нужно поделить и из каких соображений? Сколько должно быть таких
32 | сегментов?
33 | • Как долго должен проходить эксперимент и как правильно оценить предпосылки, что эксперимент
34 | изначально будет неуспешным или успешным
35 | • Оцените численные индикаторы проведения - как долго он должен идти, какую мощность должны
36 | набрать выборки, чтобы результаты были стазначимы
37 | • За какими метриками уместно следить в эксперименте, чтобы получить знания о чувствительности
38 | клиентов к цене, как их интерпретировать для принятия бизнес-решений?
39 | • Как в проведении эксперимента учитывать, что есть разные типы потребления разных продуктов
40 | компании (краткосрочные\долгосрочные аренды)
41 | • На какие ещё метрики сегментации клиентов помимо тех, что можно построить по данным, вы бы
42 | ещё посмотрели и почему
43 |
44 | Данные о поездках клиентов за последние 3 месяца до решения провести эксперимент приложены в файле
45 | csv
--------------------------------------------------------------------------------
/analytics/Делимобиль/test_senior_data.csv:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:e8b3a87276dcfef1a0ee44a459216e92d16b2576e329f6a0693360b4fb36ee35
3 | size 40964148
4 |
--------------------------------------------------------------------------------
/analytics/Контур Продуктовый аналитик/README.md:
--------------------------------------------------------------------------------
1 | ## ТЕСТОВОЕ ЗАДАНИЕ
2 |
3 | Рядом с этим файлом лежит два бэкапа MS SQL и sqlite. Для решения тестового задания можно использовать любой. Структура данных и содержимое в них идентичны. Использовать можно любой.
4 |
5 | **Схема данных:**
6 |
7 | 
8 |
9 | **Легенда:**
10 | Индивидуальным предпринимателям (ИП) необходимо сдавать отчетность в контролирующие органы через веб-сервис
11 | В 77 регионе есть несколько конкурирующих веб-сервисов (продуктов)
12 | Соответствующий продукт Контура имеет название «Бухгалтерия.Контур»
13 | Целевая аудитория веб-сервисов – ИП на упрощенной системе налогообложения (УСН)
14 | Имеются данные о плане и факте продажах продуктов Контура в шт. и руб.
15 | Имеются данные об ИП за ряд лет
16 | Средняя цена продуктов на целевом рынке равна средней цене продукта Контура
17 | Оплата веб-сервиса и у Контура, и у конкурентов происходит в зависимости от тарифа
18 |
19 | **Задания:**
20 | 1. План-факт анализ (анализ продаж)
21 | а. Подготовить отчет о продажах продукта Контура в любом удобном формате с применением визуализации
22 | б. Подготовить укрупненную и детализированные группы тарифов
23 | в. Описать логику и последовательность выполнения задания
24 | г. Сделать выводы и предположения, дать рекомендации по результатам отчета
25 | 2. Прогноз продаж и оценка емкости и доли рынка
26 | а. Спрогнозировать объем продаж продукта Контура на 2019 г.
27 | б. Оценить емкость рынка и долю рынка Контура в 2015-2018 гг. и на 2019 г.
28 | в. Описать логику и последовательность выполнения задания
29 | г. Сделать выводы и предположения, дать рекомендации по результатам прогноза и оценки
30 |
31 | Результаты можно представить либо в виде набора скриптов и книги Excel, либо в виде ноутбука Jupyter. Обратите внимание, чтобы в итогах был виден не только результат выполнения заданий, но и описана логика сбора данных.
--------------------------------------------------------------------------------
/analytics/Контур Продуктовый аналитик/media/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Контур Продуктовый аналитик/media/1.png
--------------------------------------------------------------------------------
/analytics/Контур Продуктовый аналитик/Кейс_для_проверки_компетенция_аналитика_2.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Контур Продуктовый аналитик/Кейс_для_проверки_компетенция_аналитика_2.xlsx
--------------------------------------------------------------------------------
/analytics/Красный Яр Аналитик Данных/README.md:
--------------------------------------------------------------------------------
1 | **Предоставить отчет для руководства с выводами и рекомендациями на основании данных (лист "данные"):**
2 | 1. Провести анализ данных. Можете создавать любые метрики, которые вам необходимы для понимания данных
3 | 2. На основание вашего анализа выдвинуть гипотезы:
4 | 2.1 О причинах изменения метрик в прошлом
5 | 2.2 Предложения о проведение маркетинговых акций в будущем для улучшения метрик. Объяснить как акция повлияет на улучшение
6 | 2.3 Что скажете о плановых показателях. Как бы вы строили план товарооборота?
7 |
8 | Отчет можно представить в виде презентации PowerPoint или книги Excel
9 | Информация должна подаваться структурированно
10 | Обязательно наличие графиков, подтверждающих ваши мысли
11 |
12 | **Дополнительные вопросы:**
13 | 1. Что вы можете предложить, что бы клиент начал покупать более дорогие продукты?
14 | 2. Как вернуть ушедшего покупателя?
15 | 3. Как стимулировать клиента посещать магазин чаще?
16 | 4. Как бы вы уменьшили отток клиентов?
17 | 5. Что бы вы могли предложить, для улучшения системы лояльности покупателей в компании?
18 |
--------------------------------------------------------------------------------
/analytics/Красный Яр Аналитик Данных/Testovoe_zadanie_analitik.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Красный Яр Аналитик Данных/Testovoe_zadanie_analitik.xlsx
--------------------------------------------------------------------------------
/analytics/МТС Продуктовый аналитик/README.md:
--------------------------------------------------------------------------------
1 | # Тестовое задание на продуктового аналитика в МТС Финтех
2 |
3 | ## Задача 1
4 |
5 | В МТС банке запустили аб-тест на странице, где можно оформить заявку на банковскую карту. В варианте А из 2574 клиентов, зашедших на страницу, на баннер нажали 350, в варианте Б из 2855 нажали 375. Какой вариант баннера предложить продакту и почему?
6 |
7 | ## Задача 2
8 |
9 | Есть таблица transact с транзакциями клиентов, начиная с 2021 года. В ней столбцы –
10 | id_client - id клиента
11 | tran_time - время транзакции
12 | id_tran - id транзакции
13 | sum_tran - сумма транзакции
14 |
15 | 1. Посчитать траты каждого клиента за последние 30 дней от текущего числа
16 | 2. Для топ-100 наиболее платежеспособных клиентов за всю историю покупок посчитать траты помесячно
17 |
18 | ## Задача 3
19 |
20 | Пришел продукт и говорит: "хочу посчитать retention клиентов из задачи 2". Опиши, пожалуйста, твои действия - например, вопросы которые ты задашь. Предположи ответы на свои вопросы, и исходя из этих предположений, напиши код в Python или Sql, который поможет достать нужные данные.
21 |
--------------------------------------------------------------------------------
/analytics/МТС Продуктовый аналитик/МТС_собеседование_02.docx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:c991931200ce28052a77642ccd747c6c2ab0f2b6b97606bdd642664b0b2cb73d
3 | size 223746
4 |
--------------------------------------------------------------------------------
/analytics/Магнит/README.md:
--------------------------------------------------------------------------------
1 | Есть таблица с товарами: items
2 |
3 | |item_id |name |price |update_date|
4 | |-----------|---------------------|------------|-----------|
5 | |1 |Ручка гелевая |10 |2020-02-01|
6 | |2 |Карандаш 1HH |2 |2020-01-01|
7 | |1 |Ручка шариковая |10 |2020-03-01|
8 | |3 |Ластик |5 |2020-07-01|
9 | |2 |Карандаш 1HH |3 |2020-05-01|
10 | |1 |Ручка шариковая |5 |2020-05-01|
11 | |2 |Карандаш 1H |7 |2020-06-01|
12 |
13 | ----------------------------------------------------------------
14 | И таблица с заказами: orders
15 |
16 | |order_id |user_id |item_id |order_date|
17 | |------------|------------|------------|----------|
18 | |1 |1 |1 |2020-02-01|
19 | |2 |2 |2 |2020-02-01|
20 | |3 |1 |3 |2020-07-01|
21 | |4 |3 |2 |2020-07-01|
22 | |5 |2 |1 |2020-04-01|
23 | |6 |1 |1 |2020-06-01|
24 |
25 |
26 | Написать запрос, который:
27 | 1. Выведет актуальное состояние товаров на 2020-06-01
28 | 2. Товары, купленные по цене больше или равно чем 3
29 | 3. Сумму покупок клиента 1
30 | 4. Сумма всех покупок до 2020-05-01 включительно
31 | 5. Сумму всех заказов и среднее цена заказа поквартально
32 |
33 |
34 | Python. Определить длину наибольшей последовательности одинаковых символов в строке
35 |
36 | str = 'fffggggrrrrrrrrrtttfffff'; Ответ: 9
37 |
38 | Метрики
39 | Есть продукт “почта”. Самая обычная почта, позволяющая отправлять и получать email сообщения.
40 | Есть desktop web, mobile web, android и ios приложение, также можно получать и отправлять письма из сторонних почтовых клиентов.
41 | В собственных клиентах показывается реклама, также есть возможность за небольшую ежемесячную плату отключить эту рекламу.
42 | Так получилось, что в продукте нет никакой аналитики и продукт двигается в слепую.
43 |
44 | Требуется:
45 | 1. Описать какие метрики необходимы для продукта
46 | 2. Описать как помочь продукту понять, какие пользователи в продукте есть и какие направления в продукте дальше развивать
--------------------------------------------------------------------------------
/analytics/Марс Аналитик данных/Raw data example.xlsx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:d26654027953f5d7256d05f5a99818019708115aee3d83ac97d42a60cc7f582b
3 | size 150239
4 |
--------------------------------------------------------------------------------
/analytics/Марс Аналитик данных/Приглашение на центр оценки.pdf:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:237b3874316dc04e7c83f77820af40e873140287ccf7bf85e0c1f5958a1fb777
3 | size 405142
4 |
--------------------------------------------------------------------------------
/analytics/Неизвестные/README.docx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:c0b5170368cd9495c145f2575c7898500fc0a913665a1d6ad9e96a92cfad7baf
3 | size 6999
4 |
--------------------------------------------------------------------------------
/analytics/Неизвестные/SQL task and result.docx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:e18b49d86fd0df41898bf26c18932617038c1f59dc8a470060c1f6c6bcf8b8c4
3 | size 10140
4 |
--------------------------------------------------------------------------------
/analytics/Неизвестные/Task description.docx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:029f7af35a8f3f34997d53b5cd3ee504ee399f2831f862c33de58127b118d87e
3 | size 8109
4 |
--------------------------------------------------------------------------------
/analytics/Неизвестные/_____________________ (1).docx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:8bd74ca7c5736c3d896ce153c5fb9a605cfbc98b7a8672cd80564f80465883d3
3 | size 20555
4 |
--------------------------------------------------------------------------------
/analytics/Неизвестные/telegram-cloud-photo-size-1-4967487225717697528-y.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Неизвестные/telegram-cloud-photo-size-1-4967487225717697528-y.jpeg
--------------------------------------------------------------------------------
/analytics/Неизвестные/telegram-cloud-photo-size-1-4967487225717697529-y.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Неизвестные/telegram-cloud-photo-size-1-4967487225717697529-y.jpeg
--------------------------------------------------------------------------------
/analytics/Неизвестные/Аналитик Данных.docx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:3062ab98d18246c91fd5acaff5e50962b1e0da4b839769a7b560a32093e5dd12
3 | size 14068
4 |
--------------------------------------------------------------------------------
/analytics/Неизвестные/Тестовое 08062021- 1 часть.pdf:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:e32b30ba336f407f02bc49220d1e0595061040d8e28ec5868d63eebcd7d2c325
3 | size 345721
4 |
--------------------------------------------------------------------------------
/analytics/Неизвестные/Тестовое задание EdTech.pdf:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:9c3943fbfbc1ea7b20fcc13eab8584df2ca71d5236073afdc9749b2713809fb1
3 | size 76848
4 |
--------------------------------------------------------------------------------
/analytics/Неизвестные/Тестовое задание EdTech_2.pdf:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:80c92b623b3708f1bd93bfbd8b2df02af6a6e3cd536f90612c41ab8b17db1db8
3 | size 58447
4 |
--------------------------------------------------------------------------------
/analytics/Неизвестные/Тестовое задание Социальная Сеть.docx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:b456a608b23f31ae1bfb491db8c1ee01fdec73611604d34348b37931adb79f3e
3 | size 326363
4 |
--------------------------------------------------------------------------------
/analytics/Неизвестные/Тестовое.docx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:dd1a45ec47836bc809371052dc24cce8250e707107906a2dc880d53d4593b2fa
3 | size 16016
4 |
--------------------------------------------------------------------------------
/analytics/Неизвестные/ТестовоеМТП.docx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:56c20df0c0d0f21fef8e72e2db4d4b9b15916035c6219b2e26be776dbae5308a
3 | size 18729
4 |
--------------------------------------------------------------------------------
/analytics/Неизвестные/Узнаете какие-то из тестовых_.docx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:aea9c6c6007c5bf230ec4844366ab155e48a34b993db2fcc5b6a2e6af82fb093
3 | size 6095
4 |
--------------------------------------------------------------------------------
/analytics/Росмэн/Тестовое задание (Excel).xlsx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:0c16b66b6cdd22c77b722f9e932bc55af1a94f3e8fa0dcb61714244f32e4e05d
3 | size 33879
4 |
--------------------------------------------------------------------------------
/analytics/Росмэн/Тестовое задание (SQL).xlsx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:e1b56e785f34c5aaa9a0394e57a0c4e95a5ad3dda6449a875c2379c53b49c0cc
3 | size 10627
4 |
--------------------------------------------------------------------------------
/analytics/Роснефть HR аналитик/Копия Тест!_с xn--g1aqe.xlsm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Роснефть HR аналитик/Копия Тест!_с xn--g1aqe.xlsm
--------------------------------------------------------------------------------
/analytics/Самокат Аналитик Данных/README.md:
--------------------------------------------------------------------------------
1 | Привет!
2 |
3 | Всего 3 задания
4 |
5 | ----------
6 | 1 задание
7 | ----------
8 |
9 | Нужно на основе приложенных выгрузок сделать отчет в Power BI и отправить файл .pbix
10 | (если файл не влезает в почту - положи его на гугл диск и пошарить ссылкой)
11 | Обратно слать выгрузки не нужно.
12 |
13 | Требования к отчету - представь, что это все данные, которые вообще есть и ты делаешь первый в компании отчет.
14 | Твоя задача выжать из этих выгрузок максимум пользы.
15 | Какие показатели посчитать, какие визуализации выбрать и как организовать отчет - твой выбор.
16 |
17 | Выгрузки:
18 | - warehouses
19 | - products
20 | - orders
21 | - order_lines
22 |
23 | В выгрузках рандомные данные, но стоит воспринимать их как фактические.
24 | Всю обработку нужно делать внутри Power BI - исходные файлы оставь как есть.
25 |
26 | Бонус:
27 | Если найдешь что-то интересное (аномалии, тренды, зависимости, etc.) - оформи свои мысли в ворде,
28 | сопроводив скринами визуализаций из Power BI и отправь файл .docx
29 | Если хочется сделать в формате презентации или описать внутри Power BI - тоже гуд.
30 |
31 | ----------
32 | 2 задание
33 | ----------
34 |
35 | Выгрузить список user_id тех пользователей,
36 | кто купил за период 1-15 августа 2 любых корма для животных, кроме "Корм Kitekat для кошек, с кроликом в соусе, 85 г".
37 | Отправить файл .xls
38 |
39 | ----------
40 | 3 задание
41 | ----------
42 |
43 | Напиши SQL запрос к воображаемой БД, которая имеет структуру как у тебя получилось в 1 задании в Power BI.
44 | Т.е. те же 4 таблицы, те же ключи и те же поля.
45 | Запрос должен вернуть топ 5 самых часто встречающихся товаров в первых заказах пользователей в СПб за период 15-30 августа.
46 |
47 | --
48 | После того как сделаешь - отправляй на почту HR.
49 |
50 | Удачи :)
--------------------------------------------------------------------------------
/analytics/Самокат Аналитик Данных/order_lines.txt:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:f1a9e21670aaae6c38a4e6e209fbf9d1e829acf99d39e08aabf5738534a74214
3 | size 20623041
4 |
--------------------------------------------------------------------------------
/analytics/Самокат Аналитик Данных/orders.csv:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:55e7d0c64f22113c02e1e0f2fa613f57a98bc7b985dc5363898fb93340d3d5f7
3 | size 8037658
4 |
--------------------------------------------------------------------------------
/analytics/Самокат Аналитик Данных/products.csv:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:fa3f30cae2d3ffb483fdf1932923f55bb5f3b45d1076d29edac8f32095dd195c
3 | size 128259
4 |
--------------------------------------------------------------------------------
/analytics/Самокат Аналитик Данных/warehouses.csv:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:c928cbb5d536da87d2d93101ceed6cbc13d8aeff3ee0ab44305627ea38c69fad
3 | size 4124
4 |
--------------------------------------------------------------------------------
/analytics/Самокат Аналитик/Тестирование Самокат Аналитик xn--80ah2aa4b9a.xlsx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:af779b4cf7a04b95c1ac6a58cced491b61d16d66ca770625db91478279a0e876
3 | size 109704
4 |
--------------------------------------------------------------------------------
/analytics/Сбербанк Инженер Данных/DE_task_solution.docx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:d3ba6226470beaa9be7bc2557e4445c24a4aaa16dad1c8839a044f2d3a5b4c11
3 | size 35746
4 |
--------------------------------------------------------------------------------
/analytics/Северсталь/Задание 1_2023 (Северсталь).xlsx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:d4b209c01caf56189dbb523f45e474c651bc2af769d3a9dd3a0fa1610ecc2b10
3 | size 32700
4 |
--------------------------------------------------------------------------------
/analytics/Совкомбанк Страхование/README.md:
--------------------------------------------------------------------------------
1 | Направляем небольшие тестовые задания.
2 |
3 | Если Вы готовы их выполнить – решение направьте, пожалуйста, на эту же почту.
4 |
5 | **Задание_1_реестр**
6 |
7 | С помощью скрипта на python преобразовать исходные данные до датафрейма требуемого формата (ожидаемый результат представлен на листе «Вывод»)
8 |
9 | **Задание_2_города_vba**
10 |
11 | С помощью макроса vba обработать данные на листе «Адреса» таким образом (ожидаемый результат представлен на листе «Вывод»):
12 |
13 | · если один из городов на листе «Города» указан в адресе, в соседней ячейке следует указать найденный город;
14 |
15 | · если ни один из городов на листе «Города» в адресе не найден, соседняя ячейка должна остаться пустой.
16 |
17 | Если результат не получится с помощью макроса – можно использовать скрипт на python.
18 |
--------------------------------------------------------------------------------
/analytics/Совкомбанк Страхование/задание_1_реестр.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Совкомбанк Страхование/задание_1_реестр.xlsx
--------------------------------------------------------------------------------
/analytics/Совкомбанк Страхование/задание_2_город_vba.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Совкомбанк Страхование/задание_2_город_vba.xlsx
--------------------------------------------------------------------------------
/analytics/Спортмастер/1. задание - sql (1).xlsx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:622ce34a8ca2acf74cee53ba6a579a4ec10f4e33f8bbc1ca22324ece3d79b912
3 | size 12186
4 |
--------------------------------------------------------------------------------
/analytics/Спортмастер/Тест Собеседование (1).xlsx:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:ba2718a49a0172115a9f474899341286b71bc8de6f8443d0095b5e8f7b4aa2cc
3 | size 13332
4 |
--------------------------------------------------------------------------------
/analytics/Сравниру Product Analyst/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Сравниру Product Analyst/.DS_Store
--------------------------------------------------------------------------------
/analytics/Сравниру Product Analyst/README.md:
--------------------------------------------------------------------------------
1 | # Задание для кандидатов.
2 | Набор данных, необходимый для решения задач представлен на одноименных вкладках .xls файла [data.xlsx](data.xlsx):
3 |
4 | ## Задача 1.
5 |
6 | Написать код SQL-запроса к таблице данных результатом которого будет:
7 | 1. Количество уникальных/неуникальных ID
8 | 2. Посчитать долю значений целевого признака (target=1) в разрезе категорий образования.
9 | 3. На сколько в среднем доход семьи заемщиков с id=2n, больше дохода семьи заемщиков с id=2n+1, где n- произвольное целое число?
10 |
11 | ## Задача 2.
12 | Написать SQL-запроса к таблице данных результатом, которого будет отсортированный в порядке обратном от изначального список.
13 |
14 | ## Задача 3.
15 | Написать SQL-запроса к таблице данных результатом которого будет:
16 | 1. Таблица, в которой будет посчитана сумма операций (AMOUT) за каждый из дней (DATE)
17 | 2. Таблица, в которой будет посчитана сумма операций (AMOUT) за каждый из дней (DATE) накопительным итогом, т.е. в сумме операций дня n учитывает сумму операций дня n-1
18 |
19 | ## Задача 4.
20 | Температуру в Москве можно рассматривать как сл. Величину со средним и ст. отклонением равным 10 градусам по Цельсию. Некоторый день считается аномальным, если температура выходит за два стандартных отклонения. Какими будут границы, с которых день считается аномальным в градусах по Фаренгейту?
21 |
22 | ## Задача 5.
23 | После прохождения курса статистики Петя решил моделировать время, которое он тратит на домашние задания в неделю как экспоненциально распределенную сл. величину с неизвестным . Времена, которые он замерил в разные недели можно считать независимыми.
24 | В первые шесть недель четверти Петя потратил на задания 11, 15, 17, 9, 18 и 23 часов. Чему равна оценка максимум правдоподобия параметра ?
25 |
26 | ## Задача 6.
27 | Имеется информация по клиентам (список полей во вложении). Необходимо любым, выбранным кандидатом, способом спрогнозировать целевой признак target (бинарный признак 1/0).
28 | 1. Выбор метода моделирования и итоговой модели обосновать. Обоснование необходимо сделать по максимально возможному количеству критериев.
29 | 2. Является ли Ваш прогноз стабильным? Не переобучили ли вы Вашу модель? Объясните почему.
--------------------------------------------------------------------------------
/analytics/Сравниру Product Analyst/answers.txt:
--------------------------------------------------------------------------------
1 | Задача 1.1
2 |
3 | SELECT COUNT(ID) AS total_id, COUNT(DISTINCT ID) AS total_id_distinct
4 | FROM task_1
5 |
6 | Задача 1.2
7 |
8 | SELECT education, ROUND(SUM(target) / COUNT(target), 2) AS target_ratio
9 | FROM task_1
10 | GROUP BY education
11 |
12 | Задача 1.3
13 |
14 | SELECT ROUND(
15 | AVG(CASE WHEN id %2 = 0 THEN profit_family END) -
16 | AVG(CASE WHEN id %2 != 0 THEN profit_family END),
17 | 2) AS fam_diff
18 | FROM task_1
19 |
20 | Задача 2
21 |
22 | SELECT name, ROW_NUMBER() OVER() AS rn
23 | FROM task_2
24 | ORDER BY rn DESC
25 |
26 | Задача 3.1
27 |
28 | SELECT DATE_TRUNC('day', date::date) as date, SUM(amount) AS day_sum
29 | FROM task_3
30 | GROUP BY date
31 |
32 | Задача 3.2
33 |
34 | WITH daily_sum AS (
35 | SELECT DATE_TRUNC('day', date::date) as date, SUM(amount) AS day_sum
36 | FROM task_3
37 | GROUP BY date)
38 | SELECT *,
39 | SUM(day_sum) OVER(ORDER BY date) AS CUMULATIVE_AMOUNT
40 | FROM daily_sum
41 |
42 | Задача 4
43 |
44 | Нижняя граница - среднее - 2 * стандартное отклонение (10 - 2 * 10 = -10)
45 | Верхняя границы - среднее + 2 * стандартное отклонение (10 + 2 * 10 = 30)
46 | Границы в Фаренгейтах: [14; 86]
47 |
48 | Задача 5
49 |
50 | import math
51 | import numpy as np
52 |
53 | # время на решение заданий
54 | R_A = [11, 15, 17, 9, 18, 23]
55 |
56 | # оценки максимального правдоподобия
57 | theta_A = R_A / np.sum(R_A)
58 |
59 | print("MLE: ", np.round(theta_A, 3))
60 |
61 | def f(n):
62 | return math.factorial(n)
63 |
64 | def mle(R, theta):
65 | return (f(np.sum(R)) / (np.prod([f(r) for r in R]))) * \
66 | np.prod([theta[i]**R[i] for i in range(len(R))])
67 |
68 | # максимальное правдоподобие
69 | ml_A = mle(R_A, theta_A)
70 |
71 | print("ML:{:.7f}".format(ml_A))
72 |
73 | Вывод кода:
74 | MLE: [0.118 0.161 0.183 0.097 0.194 0.247]
75 | ML:0.0000291
76 |
--------------------------------------------------------------------------------
/analytics/Сравниру Product Analyst/data.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Сравниру Product Analyst/data.xlsx
--------------------------------------------------------------------------------
/analytics/Тинькофф Аналитик SQL/Тинькофф Аналитик SQL.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/analytics/Тинькофф Аналитик SQL/Тинькофф Аналитик SQL.jpeg
--------------------------------------------------------------------------------
/backend/Appstorespy/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/backend/Appstorespy/README.md
--------------------------------------------------------------------------------
/backend/Edstein/README.md:
--------------------------------------------------------------------------------
1 | # Тестовое задание: API для статистики по погоде
2 |
3 | Как источник данных можно использовать https://developer.accuweather.com/apis.
4 | Город можно использовать любой (можно захардкодить).
5 | Законченный код передать в виде приватного репозитория на GitHub (Доступ можно выдать …)
6 | API открыт для всех, авторизация не нужна.
7 | Ожидаемая нагрузка на любой эндпоинт: 5 RPS
8 |
9 | Необходимые эндпоинты:
10 | /weather/current - Текущая температура
11 | /weather/historical - Почасовая температура за последние 24 часа (https://developer.accuweather.com/accuweather-current-conditions-api/apis/get/currentconditions/v1/%7BlocationKey%7D/historical/24)
12 | /weather/historical/max - Максимальная темперетура за 24 часа
13 | /weather/historical/min - Минимальная темперетура за 24 часа
14 | /weather/historical/avg - Средняя темперетура за 24 часа
15 | /weather/by_time - Найти температуру ближайшую к переданному timestamp (например 1621823790 должен отдать температуру за 2021-05-24 08:00. Из имеющихся данных, если такого времени нет вернуть 404)
16 | /health - Статус бекенда (Можно всегда отвечать OK)
17 |
18 | Должны быть интеграционные тесты на эндпоинты и юнит тесты на общие классы/модули.
19 | Рекомендуется хранить данные о температуре локально для снижения нагрузки на сторонний API.
20 | Рекомендуется использовать библиотеки: Rails 6+, Grape, Delayed::Job, Rufus, RSpec, VCR.
21 | Приветствуется использование кеширования и Trailblazer, swagger документации, Docker
22 |
--------------------------------------------------------------------------------
/backend/Edstein/Тестовое задание_ API для статистики по погоде.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/backend/Edstein/Тестовое задание_ API для статистики по погоде.pdf
--------------------------------------------------------------------------------
/backend/Greensight/README.md:
--------------------------------------------------------------------------------
1 | # Тестовое задание для направления Backend разработка
2 |
3 | 1. Создать страницу с формой.
4 |
5 | В форме должны быть следующие поля:
6 |
7 | - имя
8 | - фамилия
9 | - email
10 | - пароль
11 | - повтор пароля
12 |
13 | 2. Реализовать отправку этой формы при помощи AJAX.
14 |
15 | 3. Реализовать обработку AJAX запроса на php.
16 |
17 | В обработчике нужно:
18 |
19 | 1) провести валидацию
20 |
21 | - email содержит @
22 | - пароли совпадают
23 |
24 | При желании эти валидации можно также продублировать еще на клиенте (js).
25 |
26 | 2) задать некий массив уже существующих юзеров (получать его из какой-либо базы данных не требуется). В массиве должны присутствовать поля email, id, name.
27 |
28 | 3) Провести проверку есть ли в этом массиве элемент с заполненным юзером емейлом.
29 |
30 | 4) Результат проверки должен логироваться в файл в любом формате
31 |
32 | При успешной проверке - форма должна скрываться, а пользователю должно выводиться сообщение об успешной регистрации.
33 |
34 | При неудачной проверке - пользователю должна выводиться ошибка над формой.
35 |
36 | 4. Создать публичный репозиторий на github и загрузить туда весь исходный код задания. Файлы-логи не должны попадать в репозиторий.
37 |
38 | В качестве результата передать ссылку на этот репозиторий.
39 |
40 |
41 | Можно использовать любые javascript библиотеки.
42 |
43 | Для стилизации страницы использовать [getbootstrap.com](https://getbootstrap.com/)
--------------------------------------------------------------------------------
/backend/HealthSamurai/HealthSamurai_clojure.md:
--------------------------------------------------------------------------------
1 | ## Clojure Developer
2 |
3 | В мире clojure не приняты фреймворки, каждый инженер собирает их сознательно под себя и под задачу из библиотек. Необходимо собрать свой полный Clojure/ClojureScript стек с PostgreSQL и реализовать на нем CRUD пациента (dataset описан ниже). На UI должны быть реализованы следующие возможности: просмотр списка пациентов, поиск, фильтрация, создание, удаление, редактирование, валидация. Обязательно нужно покрыть приложение тестами (это важная часть задания, мы хотим посмотреть, что и как ты будешь тестировать). Желательно настроить CI (сборка по коммиту) и подготовить приложение к развертыванию в K8s.
4 |
5 | Dataset:
6 |
7 | * ФИО пациента
8 | * Пол
9 | * Дата рождения
10 | * Адрес
11 | * Номер полиса ОМС
12 |
13 | **Дополнительные ограничения (опционально).**
14 | REPL-driven разработка в **emacs** или **vim** будет дополнительным плюсом (как-то так [http://www.parens-of-the-dead.com/](http://www.parens-of-the-dead.com/))
15 |
16 | Все что описано выше, это исходные ограничения, все остальные решения/выбор на каждом этапе создания приложения тебе придется принимать самому!
17 |
18 | **Демо**
19 | По завершении проекта, необходимо презентовать **демо** работающего приложения, как ты его разрабатывал в repl, код, тесты и **обосновать** принятые ключевые решения в рамках создания приложения.
20 |
21 | **P.S.** Пожалуйста, обрати внимание, что мы предлагаем реализовать тестовое задание без использования фреймворков (Luminus - это фреймворк :)
22 |
--------------------------------------------------------------------------------
/backend/ItGlobal/README.md:
--------------------------------------------------------------------------------
1 | Необходимо разработать бекенд (серверную часть) веб-приложения, демонстрирующего
2 | расписание рейсовых автобусов.
3 |
4 | Автобусы двигаются по маршрутам от конечной до конечной в прямом и обратном направлении. В
5 | разных направлениях может быть разный набор остановочных пунктов.
6 |
7 | Фронтенд приложения получает данные с сервера через REST API, необходимо реализовать
8 | следующие методы этого API:
9 |
10 | 1. /api/find-bus
11 |
12 | Описание:
13 | Возвращает автобусы, маршрут которых включает отрезок от одной остановки к другой, с тремя
14 | ближайшими к текущему времени вариантами времени прибытия на исходную остановку.
15 |
16 | Параметры запроса:
17 | * from: id исходной остановки.
18 | * to: id конечной остановки.
19 |
20 | Пример ответа:
21 | ```
22 | {
23 | "from": "ул. Пушкина",
24 | "to": "ул. Ленина",
25 | "buses": [
26 | {
27 | "route": "Автобус No11 в сторону ост. Попова", // указывается конечная остановка маршрута
28 | "next_arrivals": ["08:15", "08:40", "09:15"]
29 | },
30 | {
31 | "route": "Автобус No21 в сторону ост.Ленина",
32 | "next_arrivals": ["08:30", "09:04", "09:30"]
33 | }
34 | ]
35 | }
36 | ```
37 |
38 | 2. Методы (или метод) предоставляющие механизм редактирования маршрутов, т.е. набора
39 | остановок на пути следования автобуса (без указания времени). Входный параметры и
40 | формат ответа продумать самостоятельно.
41 |
42 | Требования к реализации:
43 | 1. Язык программирования: PHP (версия 7+).
44 | 2. Использование фреймворка: допускается использование фреймворка на выбор: Laravel,
45 | Symfony, Yii2 или чистый PHP.
46 | 3. База данных: PostgreSQL.
47 | 4. Использование подхода ООП
48 |
49 | Оцениваться будут архитектура решения, качество кода, соответствие REST принципам и
50 | тестируемость.
51 |
52 | Будет плюсом если проект будет запускаться в docker.
53 |
54 | Результат представить в виде ссылки на публичный репозиторий на bitbucket.org. Он должен
55 | включать в себя php файлы проекта, sql дамп базы, схему структуры базы данных в виде
56 | изображения и инструкцию по запуску проекта.
--------------------------------------------------------------------------------
/backend/Oxem Studio/README.md:
--------------------------------------------------------------------------------
1 | # Бэкенд-разработчик — Тестовое задание от Oxem Studio
2 |
3 | **Готовое задание прислать ссылкой на репозиторий в GitHub.**
4 |
5 | **На выполнение задание отводится 5 дней с момента получения.**
6 |
7 |
8 |
9 | ## **Задание: симулятор деревенской жизни на ООП**
10 |
11 | Летом, чтобы отдохнуть от городской суеты, вы поехали к дяде на ферму. Через несколько дней отдых вам наскучил, и вы решили поупражняться в программировании. Зайдя в хлев, где живут коровы и куры, и увидев как работает автоматический сборщик молока и яиц, вы решили описать его работу в парадигме ООП.
12 |
13 | ## **Дано**
14 |
15 | * В хлеву живут 10 коров и 20 кур;
16 | * Корова может давать 8-12 литров молока за один надой;
17 | * Курица может нести 0-1 яйцо за одну кладку;
18 | * У каждой коровы и курицы на ферме есть уникальный регистрационный номер.
19 |
20 | ## **Задача**
21 |
22 | Реализовать, используя php, объектно-ориентированную систему: прототип сбора продукции. Реализовать структуру классов, задействовать механизм наследования.
23 |
24 | Класс фермы (Farm) должен быть автономным, сам вести учёт номеров животных, сбор и подсчет продукции. Решение должно быть расширяемым, добавление новых типов животных и продукции не должно приводить к модификации непосредственно класса Farm.
25 |
26 |
27 |
28 | Система должна уметь:
29 |
30 | * Добавлять животных в хлев поштучно.
31 | * Собирать продукцию у всех животных, зарегистрированных в хлеву.
32 | * Подсчитывать общее кол-во собранной продукции.
33 |
34 |
35 |
36 | **Реализация графического интерфейса не требуется.**
37 |
38 | **Реализация хранения данных в БД или файлах не требуется.**
39 |
40 | Задание рассчитано на проверку навыков работы с ООП.
41 |
42 | Способ первичной инициализации списка животных - на ваше усмотрение.
43 |
44 | ## **Результат запуска скрипта**
45 |
46 | При запуске скрипта main.php в консоли:
47 |
48 | * Система должна добавить животных в хлев (10 коров и 20 кур).
49 | * Вывести на экран информацию о количестве каждого типа животных на ферме.
50 | * 7 раз (неделю) произвести сбор продукции (подоить коров и собрать яйца у кур).
51 | * Вывести на экран общее кол-во собранной за неделю продукции каждого типа.
52 | * Добавить на ферму ещё 5 кур и 1 корову (съездили на рынок, купили животных).
53 | * Снова вывести информацию о количестве каждого типа животных на ферме.
54 | * Снова 7 раз (неделю) производим сбор продукции и выводим результат на экран.
--------------------------------------------------------------------------------
/backend/Oxem Studio/Бэкенд-разработчик — Тестовое задание от Oxem Studio-2024111916355728.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/backend/Oxem Studio/Бэкенд-разработчик — Тестовое задание от Oxem Studio-2024111916355728.pdf
--------------------------------------------------------------------------------
/backend/Python/ABZ.agency/Тестовое задание на позицию Junior Python Developer.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/backend/Python/ABZ.agency/Тестовое задание на позицию Junior Python Developer.pdf
--------------------------------------------------------------------------------
/backend/Python/AppBooster/backend.md:
--------------------------------------------------------------------------------
1 | # Тестовое задание: backend
2 |
3 | Мы создаём мобильные приложения и иногда для тестирования гипотез приходится запускать AB-тесты. Для этого нам нужна система, представляющая собой простейшее REST API, состоящее из одного эндпойнта.
4 |
5 | ## API и распределение
6 |
7 | Мобильное приложение при запуске генерирует некоторый уникальный ID клиента (который сохраняется между сессиями) и запрашивает список экспериментов, добавляя HTTP-заголовок `Device-Token`. В ответ сервер отдаёт список экспериментов. Для каждого эксперимента клиент получает:
8 |
9 | * Ключ: имя эксперимента. В клиенте есть код, который будет изменять какое-то поведение в зависимости от значения этого ключа
10 | * Значение: строка, одна из возможных опций (см. ниже)
11 |
12 | Важно, чтобы девайс попадал в одну группу и всегда оставался в ней.
13 |
14 | ## Эксперименты
15 | ### 1. Цвет кнопки
16 |
17 | У нас есть гипотеза, что цвет кнопки «купить» влияет на конверсию в покупку
18 |
19 | * Ключ: `button_color`
20 | * Опции:
21 | * `#FF0000` → 33.3%
22 | * `#00FF00` → 33.3%
23 | * `#0000FF` → 33.3%
24 |
25 | Так после 600 запросов к API с различными `DeviceToken` каждый цвет должны получить по 200 девайсов
26 |
27 | ### 2. Стоимость покупки
28 |
29 | У нас есть гипотеза, что изменение стоимости покупки в приложении может повлять на нашу маржинальную прибыль. Но чтобы не терять деньги в случае неудачного эксперимента, 75% юзеров будут получать старую цену и только на малой части аудитории мы протестируем изменение:
30 |
31 | * Ключ `price`
32 | * Опции:
33 | * `10` → 75%
34 | * `20` → 10%
35 | * `50` → 5%
36 | * `5` → 10%
37 |
38 |
39 | ## Требования и ограничения
40 |
41 | 1. Если девайс однажды получил значение, то он всегда будет получать только его
42 | 1. Эксперимент проводится только для новых девайсов: если эксперимент создан после первого запроса от девайса, то девайс не должен ничего знать об этом эксперименте
43 |
44 | ## Задание
45 |
46 | 1. Спроектируйте, опишите и реализуйте API
47 | 2. Добавьте эксперименты (1) и (2) в приложение
48 | 3. Создайте страницу для статистики: простая таблица со списком экспериментов, общее количество девайсов, участвующих в эксперименте и их распределение между опциями
49 |
50 | Можно использовать любые тенхологии и библиотеки
51 |
52 | Плюсом будет:
53 |
54 | * Наличие тестов
55 | * Задеплоенная версия приложения
56 | * Скорость ответа от сервера <100ms
57 |
--------------------------------------------------------------------------------
/backend/Python/Appstorespy/test_backend.md:
--------------------------------------------------------------------------------
1 | # Какие знания нужны junior backend developer в 2023
2 |
3 | У нас в [Appstorespy.com](https://appstorespy.com/) постоянно открыты вакансии для backend и frontend разработчиков, в том числе и на позиции уровня junior.~~
4 |
5 | Успешное выполнение задания подтверждает наличие у вас минимальных базовых знаний, необходимых для самостоятельной работы над backend проектом начального уровня в 2023 году.
6 |
7 | Данное задание не оплачивается, не является офертой, не гарантирует трудоустройства, не требует использования всех перечисленных технологий и не предусматривает единственно верного решения.
8 |
9 | Затруднения при реализации задания свидетельствуют о наличии пробелов в знаниях и требуют дополнительной проработки. Нет ни одного образовательного курса, который бы охватывал весь необходимый стек, но отдельно по каждой теме имеется избыточная информация, включая видео и туториалы.
10 |
11 | **Начальный стек технологий backend: Python 3, Django 3, MySQL/PostgreSQL, MongoDB, Redis, Memcached, RabbitMQ, Celery, Elasticsearch, REST, GraphQL.**
12 |
13 | Обязательно нужно иметь хорошие знания основ программирования и самого языка, ООП, Style Guide, PEP8, уметь гуглить и находить нужную информацию, знать последние версии основных инструментов, базовые навыки работы с Git, virtualenv, pip, уметь развернуть и запустить рабочий проект на сервере под gunicorn.
14 |
15 | ## Задача
16 |
17 | Необходимо написать бекенд для работы с приложением React, которое позволяет пользователю зарегистрироваться и загрузить файл на сервер для обработки. После асинхронной обработки пользователь сможет посмотреть информацию о своем файле. Непринципиально какая именно обработка файла: сервер может посчитать количество строк в файле, обрезать видео файл и т.д.
18 |
19 | Приложение React общается с бекендом по GraphQL. Соответственно нужны методы для регистрации, логина, логаута пользователей, аплоада файла и просмотра информации о нем.
20 |
21 | Написание собственного кода при наличии готовых проверенных open source библиотек может быть рассмотрено как неумение пользоваться поиском, оценивать собственные трудозатраты и выставлять приоритеты задач. Нам ваши велосипеды не нужны.
22 |
23 | Проверка результата выполнения задания: тесты, Postman.
24 |
25 | ### Рекомендуемый выбор технологий в порядке увеличения сложности
26 |
27 | Фреймворк: Django, Flask
28 |
29 | Файловое хранилище: локально, S3
30 |
31 | Реляционная БД: MySQL, PostgreSQL
32 |
33 | NoSQL БД: MongoDB, Redis, Elasticsearch
34 |
35 | Кеширование: Memcached, Redis
36 |
37 | Регистрация пользователей: Email, Google
38 |
39 | Авторизация пользователей: Токены(JWT), Auth0, Keycloak
40 |
41 | Distributed tasks: RabbitMQ/Redis+Celery, Kafka
42 |
43 | Поиск: Elasticsearch
--------------------------------------------------------------------------------
/backend/Python/Aviasales/README.md:
--------------------------------------------------------------------------------
1 | ## Тестовое задание в команду ассистеда (Python/Go)
2 |
3 | В папке два XML – это ответы на поисковые запросы, сделанные к одному из наших партнёров.
4 |
5 | [RS_Via-3.xml](/backend/Python/Aviasales/RS_Via-3.xml)
6 |
7 | [RS_ViaOW.xml](/backend/Python/Aviasales/RS_ViaOW.xml)
8 |
9 | В ответах лежат варианты перелётов (тег `Flights`) со всей необходимой информацией,
10 | чтобы отобразить билет на Aviasales.
11 |
12 | На основе этих данных, нужно сделать вебсервис,
13 | в котором есть эндпоинты, отвечающие на следующие запросы:
14 |
15 | * Какие варианты перелёта из DXB в BKK мы получили?
16 | * Самый дорогой/дешёвый, быстрый/долгий и оптимальный варианты
17 | * В чём отличия между результатами двух запросов (изменение маршрутов/условий)?
18 |
19 | Язык реализации: `Go`
20 | Формат ответа: `json`
21 | По возможности использовать стандартную библиотеку.
22 |
23 | Язык реализации: `python3`
24 | Формат ответа: `json`
25 | Используемые библиотеки и инструменты — всё на твой выбор.
26 |
27 | Оценивать будем умение выполнять задачу имея неполные данные о ней,
28 | умение самостоятельно принимать решения и качество кода.
29 |
--------------------------------------------------------------------------------
/backend/Python/AvitoTech/README.md:
--------------------------------------------------------------------------------
1 | # Тестовое задание на позицию стажера/junior бекенд разработчика в юнит Авто
2 |
3 | ## Задача:
4 |
5 | Нужно сделать HTTP сервис для сокращения URL наподобие [Bitly](https://bitly.com/) и других сервисов.
6 |
7 | UI не нужен, достаточно сделать JSON API сервис.
8 | Должна быть возможность:
9 | - сохранить короткое представление заданного URL
10 | - перейти по сохраненному ранее короткому представлению и получить redirect на соответствующий исходный URL
11 |
12 | ### Требования:
13 |
14 | - Язык программирования: Go/Python/PHP/Java/JavaScript
15 | - Предоставить инструкцию по запуску приложения. В идеале (но не обязательно) – использовать контейнеризацию с возможностью запустить проект командой [`docker-compose up`](https://docs.docker.com/compose/)
16 | - Требований к используемым технологиям нет - можно использовать любую БД для персистентности
17 | - Код нужно выложить на github (просьба не делать форк этого репозитория, чтобы не плодить плагиат)
18 |
19 | ### Усложнения:
20 |
21 | - Написаны тесты (постарайтесь достичь покрытия в 70% и больше)
22 | - Добавлена валидация URL с проверкой корректности ссылки
23 | - Добавлена возможность задавать кастомные ссылки, чтобы пользователь мог сделать их человекочитаемыми - [http://bit.ly/avito-auto-be](http://bit.ly/avito-auto-be)
24 | - Проведено нагрузочное тестирование с целью понять, какую нагрузку на чтение может выдержать наш сервис
25 | - Если вдруг будет желание, можно слепить простой UI и выложить сервис на бесплатный хостинг - Google Cloud, AWS и подобные.
26 |
--------------------------------------------------------------------------------
/backend/Python/AvitoTech/README1.md:
--------------------------------------------------------------------------------
1 | # Тестовое задание по python
2 |
3 | ## Условие
4 |
5 | Необходимо реализовать Python-библиотеку, которая осуществляет получение квадратной матрицы (NxN) с удалённого сервера и возвращает её пользователю в виде `List[int]`. Этот список должен содержать результат обхода полученной матрицы по спирали: против часовой стрелки, начиная с левого верхнего угла (см. test case ниже).
6 |
7 | Пример исходной матрицы:
8 |
9 | ```
10 | +-----+-----+-----+-----+
11 | | 10 | 20 | 30 | 40 |
12 | +-----+-----+-----+-----+
13 | | 50 | 60 | 70 | 80 |
14 | +-----+-----+-----+-----+
15 | | 90 | 100 | 110 | 120 |
16 | +-----+-----+-----+-----+
17 | | 130 | 140 | 150 | 160 |
18 | +-----+-----+-----+-----+
19 | ```
20 |
21 | Матрица гарантированно содержит целые неотрицательные числа. Форматирование границ иными символами не предполагается.
22 |
23 | ## Требования к выполнению и оформлению
24 |
25 | - Библиотека содержит функцию со следующим интерфейсом:
26 |
27 | ```python
28 | async def get_matrix(url: str) -> List[int]:
29 | ...
30 | ```
31 |
32 | - Функция единственным аргументом получает URL для загрузки матрицы с сервера по протоколу HTTP(S).
33 | - Функция возвращает список, содержащий результат обхода полученной матрицы по спирали: против часовой стрелки, начиная с левого верхнего угла.
34 | - Взаимодействие с сервером должно быть реализовано асинхронно - посредством aiohttp, httpx или другого компонента на asyncio.
35 | - Библиотека должна корректно обрабатывать ошибки сервера и сетевые ошибки (5xx, Connection Timeout, Connection Refused, ...).
36 | - В дальнейшем размерность матрицы может быть изменена с сохранением форматирования. Библиотека должна сохранить свою работоспособность на квадратных матрицах другой размерности.
37 | - Решение задачи необходимо разместить на одном из публичных git-хостингов (GitHub, GitLab, Bitbucket). Можно также выслать решение в виде архива (zip, tar). Загружать библиотеку в PyPi или другие репозитории не требуется.
38 |
39 | ## Проверка решения
40 |
41 | - Для самостоятельной проверки можно использовать следующий test case:
42 |
43 | ```python
44 | SOURCE_URL = './backend/Python/AvitoTech/matrix.txt'
45 | TRAVERSAL = [
46 | 10, 50, 90, 130,
47 | 140, 150, 160, 120,
48 | 80, 40, 30, 20,
49 | 60, 100, 110, 70,
50 | ]
51 |
52 | def test_get_matrix():
53 | assert asyncio.run(get_matrix(SOURCE_URL)) == TRAVERSAL
54 | ```
55 |
56 | При проверке мы также будем обращать внимание на тесты, type hints, структуру решения и общее качество кода.
57 |
58 | Удачи в выполнении задачи и не забывайте о [The Zen of Python](https://www.python.org/dev/peps/pep-0020/#the-zen-of-python)! :)
--------------------------------------------------------------------------------
/backend/Python/AvitoTech/matrix.txt:
--------------------------------------------------------------------------------
1 | +-----+-----+-----+-----+
2 | | 10 | 20 | 30 | 40 |
3 | +-----+-----+-----+-----+
4 | | 50 | 60 | 70 | 80 |
5 | +-----+-----+-----+-----+
6 | | 90 | 100 | 110 | 120 |
7 | +-----+-----+-----+-----+
8 | | 130 | 140 | 150 | 160 |
9 | +-----+-----+-----+-----+
10 |
--------------------------------------------------------------------------------
/backend/Python/Bewise/test_python.md:
--------------------------------------------------------------------------------
1 | Результат выполнения задания должен быть выложен соискателем в
2 | публичный репозиторий github и помимо кода проекта содержать
3 | подробные инструкции по сборке и запуску. Ссылку на проект
4 | необходимо направить на почту: hr@bewise.ai в тексте письма указать
5 | ваше ФИО и ссылку на ваше резюме
6 | # Задачи:
7 |
8 | 1. С помощью Docker (предпочтительно - docker-compose) развернуть образ с
9 | любой опенсорсной СУБД (предпочтительно - PostgreSQL). Предоставить все
10 | необходимые скрипты и конфигурационные (docker/compose) файлы для
11 | развертывания СУБД, а также инструкции для подключения к ней. Необходимо
12 | обеспечить сохранность данных при рестарте контейнера (то есть -
13 | использовать volume-ы для хранения файлов СУБД на хост-машине.
14 |
15 | 2. Реализовать на Python3 простой веб сервис (с помощью FastAPI или Flask,
16 | например), выполняющий следующие функции:
17 |
18 | * В сервисе должно быть реализовано REST API, принимающее на вход
19 | POST запросы с содержимым вида {"questions_num": integer} ;
20 | * После получения запроса сервис, в свою очередь, запрашивает с
21 | публичного API (англоязычные вопросы для викторин)
22 | https://jservice.io/api/random?count=1 указанное в полученном запросе
23 | количество вопросов.
24 | * Далее, полученные ответы должны сохраняться в базе данных из п. 1,
25 | причем сохранена должна быть как минимум следующая информация
26 | (название колонок и типы данный можете выбрать сами, также можете
27 | добавлять свои колонки): 1. ID вопроса, 2. Текст вопроса, 3. Текст ответа,
28 | * Дата создания вопроса. В случае, если в БД имеется такой же
29 | вопрос, к публичному API с викторинами должны выполняться
30 | дополнительные запросы до тех пор, пока не будет получен уникальный
31 | вопрос для викторины.
32 | * Ответом на запрос из п.2.a должен быть предыдущей сохранённый
33 | вопрос для викторины. В случае его отсутствия - пустой объект.
34 |
35 | 3. В репозитории с заданием должны быть предоставлены инструкции по
36 | сборке докер-образа с сервисом из п. 2., его настройке и запуску. А также
37 | пример запроса к POST API сервиса.
38 |
39 | 4. Желательно, если при выполнении задания вы будете использовать
40 | docker-compose, SqlAalchemy, пользоваться аннотацией типов.
41 |
--------------------------------------------------------------------------------
/backend/Python/DjangoTestTask/Task-itself.md:
--------------------------------------------------------------------------------
1 | # Places Remember
2 |
3 | Скачать .zip файл
4 |
5 | ## Цель
6 | Создать веб-приложение, с помощью которого люди смогут хранить свои впечатления о посещаемых местах.
7 |
8 | ### Описание задачи
9 | Пользователь заходит на сайт и видит страницу с кратким описанием сервиса. Также, он замечает кнопки “Войти с помощью Google” (или VK, на Ваше усмотрение), нажимая на которую Google/VK предлагает ему разрешить доступ к его базовой информации.
10 |
11 | Он разрешает доступ, после чего должна открыться страница. В ее шапке будет имя и фотография (информация взята из профиля Google/VK), по центру страницы надпись “У вас нет ни одного воспоминания”, кнопка “Добавить воспоминание” (ее расположение на ваше усмотрение), при нажатии на которую должна открываться форма с возможностью указания места на карте, а также поле для ввода названия и поле для ввода комментария об этом месте.
12 |
13 | Далее пользователь может нажать на кнопку “Сохранить”, после чего он снова попадает на домашнюю страницу со списком из этого элемента и возможностью добавлять новые места. Весь добавленный список мест будет отображаться на домашней странице.
14 |
15 | На домашней странице пользователя также есть кнопка, позволяющая ему выйти из своего аккаунта. После выхода он должен попасть на приветственную страницу сервиса без возможности видеть список посещаемых мест. При повторной авторизации через Google/VK пользователь снова видит все свои добавленные места.
16 |
17 | ### Требования к реализации:
18 | - Приложение должно быть реализовано на базе фреймворка Django.
19 | - Оформление кода должно соответствовать стандартам (PEP8, Django coding style)
20 | - Все используемые зависимости должны быть актуальными на момент создания проекта.
21 | - С самого начала разработки необходимо использовать git, а также следовать стилю коммитов: https://chris.beams.io/posts/git-commit/. Исходный код приложения должен быть размещён на github.
22 | - Основной функционал (создание впечатлений о посещаемых местах и получение их списка) должен быть покрыт юнит-тестами.
23 | - Возможно использование любых сторонних пакетов, для стилей рекомендуется использовать bootstrap.
24 | - Если что-то не удалось сделать, необходимо описать проблемы в файле README.md
25 |
26 | ### Будет плюсом:
27 | - Запуск тестов при новых коммитах реализован с использованием github actions.
28 | - Локальный запуск через docker/docker-compose
29 | - В README проекта есть бейдж с текущим покрытием тестами (https://coveralls.io/).
30 | - Сконфигурированные правила для линтеров, запуск линтеров при коммите/пуше/github actions
31 | Приложение запускается на одном из облачных сервисов
32 |
--------------------------------------------------------------------------------
/backend/Python/DjangoTestTask/django-test-task-main.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/backend/Python/DjangoTestTask/django-test-task-main.zip
--------------------------------------------------------------------------------
/backend/Python/FitnessKit/тестовое бэк.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/backend/Python/FitnessKit/тестовое бэк.pdf
--------------------------------------------------------------------------------
/backend/Python/FunBox/python.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/backend/Python/FunBox/python.pdf
--------------------------------------------------------------------------------
/backend/Python/KazanExpress/README.md:
--------------------------------------------------------------------------------
1 | # KazanExpress test for Python developer
2 | Here lies the description and requirements of the test task for Python/Django Developer position applicants.
3 |
4 | ## Task goal
5 | The goal of this test task is to develop a simple Django admin panel which purpose is to manage the content for an online store and to have multi-role support.
6 |
7 | ## Domain description
8 | The following image represents the class diagram that should be considered during development of your admin panel. This is the minimal requirements for classes and fields that we are expecting from you to add. You can make your own updates and add additional functional. All images fields should be represented as links on images. You are free to use any database, which seems suitable for you and for the project.
9 |
10 | 
11 |
12 | ## Requirements
13 | ### Shop admin
14 | 1. Navigate through the shops list.
15 | 2. Make a search by title.
16 | 3. Edit everything except shop id.
17 | 4. Upload image as shop pic.
18 |
19 | ### Product admin
20 | 1. Navigate through product list.
21 | 2. Search by id or product title.
22 | 3. Edit everything except product id.
23 | 4. First image should be displayed as main image in both list view and product view.
24 | 5. Sort products in product list by number of orders and by price.
25 | 6. Filter list of products by active flag.
26 | 7. Filter by price range.
27 | 8. Attach product to one or more categories.
28 |
29 | ### Category admin
30 | 1. Navigate through categories list.
31 | 2. Search by product id, title and parent category.
32 | 3. Add one or more parent categories.
33 | 4. Display all possible paths to chosen category.
34 |
35 | ### Management
36 | There should be at least two administrative roles for the following purposes:
37 | 1. Moderation for products.
38 | 2. Moderation of all available pages.
39 |
40 | ## Submission
41 | Fork this repository, prepare your solution and make a pull request when you're done.
42 | Don't forget to write docs :)
43 |
44 | ## Good luck!
45 |
--------------------------------------------------------------------------------
/backend/Python/KosyanMedia/README.md:
--------------------------------------------------------------------------------
1 | ## Тестовое задание в команду гейтов (Python)
2 |
3 | В папке два XML – это ответы на запросы, сделанные к API партнёра via.com.
4 |
5 | [RS_Via-3.xml](/backend/Python/KosyanMedia/RS_Via-3.xml)
6 |
7 | [RS_ViaOW.xml](/backend/Python/KosyanMedia/RS_ViaOW.xml)
8 |
9 | Необходимо их распарсить и вывести списком отличия между результатами двух запросов по маршрутам (тег Flights).
10 |
11 | * Какие рейсы входят в маршрут
12 | * Время начала и время конца маршрута
13 | * Цена маршрута
14 | * Что изменилось по условиям?
15 | * Добавился ли новый маршрут?
16 |
17 | Язык реализации — python3
18 | Используемые библиотеки и инструменты — всё на твой выбор.
19 |
20 | Оценивать будем умение выполнять задачу имея неполные данные о ней,
21 | умение самостоятельно принимать решения и качество кода.
22 |
--------------------------------------------------------------------------------
/backend/Python/MarketIntelligence/README.md:
--------------------------------------------------------------------------------
1 | # Тестовое задание для стажера в Market Intelligence.
2 |
3 | ## Задача:
4 |
5 | Необходимо реализовать сервис, позволяющий следить за изменением количества объявлений в Авито по определённому поисковому запросу и региону.
6 |
7 | Если совсем не получается парсить Авито, можно использовать как основу сервиса любой другой классифайд (на Ваш выбор, но лучше всё-таки Авито).
8 |
9 | UI не нужен, достаточно сделать JSON API сервис.
10 |
11 | Для написание сервиса можно использовать [FastAPI](https://github.com/tiangolo/fastapi) или любой другой фреймворк.
12 |
13 | - Метод `/add` Должен **принимать** поисковую фразу и регион, регистрировать их в системе. **Возвращать** id этой пары.
14 | - Метод `/stat` **Принимает** на вход id связки поисковая фраза + регион и интервал, за который нужно вывести счётчики. **Возвращает** счётчики и соответствующие им временные метки (timestamp).
15 |
16 | Частота опроса = 1 раз в час для каждого id
17 |
18 | ### Требования:
19 |
20 | - Язык программирования: Python 3.7/3.8
21 | - Использование [Docker](https://www.docker.com), сервис должен запускаться с помощью [`docker-compose up`](https://docs.docker.com/compose/reference/up/).
22 | - Требований к используемым технологиям нет.
23 | - Код должен соответствовать PEP, необходимо использование type hints, к публичным методам должна быть написана документация.
24 | - Чтобы получить число объявлений, можно:
25 | - парсить web-страницу объявления (xpath, css-селекторы)
26 | - самостоятельно проанализировать трафик на мобильных приложениях или мобильном сайте и выяснить какой там API для получения информации об объявлении (это будет круто!)
27 |
28 | ### Усложнения:
29 |
30 | - Написаны тесты (постарайтесь достичь покрытия в 70% и больше). Вы можете использовать [pytest](https://docs.pytest.org/en/latest/) или любую другую библиотеку для тестирования.
31 | - Сервис асинхронно обрабатывает запросы.
32 | - Данные сервиса хранятся во внешнем хранилище, запуск которого также описан в `docker-compose`. Мы рекомендуем использовать [MongoDB](https://www.mongodb.com) или [Postgres](https://www.postgresql.org/), но Вы можете использовать любую подходящую базу.
33 | - По каждому id также собираются топ 5 объявлений. На их получение есть отдельная ручка, архитектуру продумайте самостоятельно
34 |
35 |
--------------------------------------------------------------------------------
/backend/Python/MarketIntelligence/README1.md:
--------------------------------------------------------------------------------
1 | # Тестовое задание для стажера в Market Intelligence.
2 |
3 | ## Задача:
4 |
5 | Нужно сделать HTTP сервис для одноразовых секретов наподобие [https://onetimesecret.com/](https://onetimesecret.com/?locale=ru).
6 |
7 | Он должен позволить создать секрет, задать кодовую фразу для его открытия и cгенерировать код, по которому можно прочитать секрет только один раз. UI не нужен, это должен быть JSON Api сервис.
8 |
9 | Для написание сервиса можно использовать [FastAPI](https://github.com/tiangolo/fastapi) или любой другой фреймворк.
10 |
11 | - Метод `/generate` должен принимать секрет и кодовую фразу и отдавать `secret_key` по которому этот секрет можно получить.
12 | - Метод `/secrets/{secret_key}` принимает на вход кодовую фразу и отдает секрет.
13 |
14 | ### Требования:
15 |
16 | - Язык программирования: Python 3.7.
17 | - Использование [Docker](https://www.docker.com), сервис должен запускаться с помощью [`docker-compose up`](https://docs.docker.com/compose/reference/up/).
18 | - Требований к используемым технологиям нет.
19 | - Код должен соответствовать PEP, необходимо использование type hints, к публичным методам должна быть написана документация на английском языке.
20 |
21 | ### Усложнения:
22 |
23 | - Написаны тесты (постарайтесь достичь покрытия в 70% и больше). Вы можете использовать [pytest](https://docs.pytest.org/en/latest/) или любую другую библиотеку для тестирования.
24 | - Сервис асинхронно обрабатывает запросы.
25 | - Данные сервиса хранятся во внешнем хранилище, запуск которого также описан в `docker-compose`. Мы рекомендуем использовать [MongoDB](https://www.mongodb.com), но Вы можете использовать любую подходящую базу.
26 | - Секреты и кодовые фразы не хранятся в базе в открытом виде.
27 | - Добавлена возможность задавать время жизни для секретов. Можно попробовать реализовать это с помощью [TTL индексов](https://docs.mongodb.com/manual/core/index-ttl/).
28 |
--------------------------------------------------------------------------------
/backend/Python/OstrovokTech/README.md:
--------------------------------------------------------------------------------
1 | ## Тестовые задания для Python
2 |
3 | ### Задача 1: Что может быть проще SQL?
4 |
5 | Вам дана таблица в postgres, которая представляет из себя список сотрудников с их зарплатами и отделами.
6 | Необходимо написать запрос, который будет выбирать человека с максимальной зарплатой из каждого отдела. В качестве тестовых данных можете использовать [дамп таблицы](employee.sql), пример схемы:
7 | ```
8 | postgres=# \d employee
9 | Table "public.employee"
10 | Column | Type | Modifiers
11 | ------------+-----------------------+-----------
12 | id | integer | not null
13 | name | character varying(30) |
14 | department | character varying(30) |
15 | salary | integer |
16 | Indexes:
17 | "employee_pkey" PRIMARY KEY, btree (id)
18 | ```
19 | Если нам нужна информация о всех сотрудниках, имеющих максимальную зарплату в отделе(в случае, когда она одинаковая):
20 | ```
21 | SELECT m.name, m.department, t.mx FROM (SELECT department, max(salary) as mx from employee GROUP BY department) t JOIN employee m on m.department = t.department and t.mx = m.salary;
22 | ```
23 | Если достаточно информации о любом из сотрудников с максимальной зарплатой:
24 | ```
25 | SELECT DISTINCT ON (department) department, name, salary from employee ORDER BY department, salary DESC;
26 | ```
27 | Запустить запросы, посмотреть результ:
28 | ```
29 | make sql
30 | ```
31 |
32 |
33 | ### Задача 2: Smashing Wallpaper Downloader
34 |
35 | Есть прекрасный сайт Smashing Magazine, который каждый месяц выкладывает отличные обои для десктопа. Заходить каждый месяц и проверять, что там нового дело не благородное, поэтому давайте попробуем автоматизировать эту задачу.
36 | Требуется написать cli утилиту, которая будет качать все обои в требуемом разрешение за указанный месяц-год в текущую директорию пользователя. Вот [тут](https://www.smashingmagazine.com/tag/wallpapers/) находятся все обои, а [здесь](https://www.smashingmagazine.com/2017/04/desktop-wallpaper-calendars-may-2017/) находятся обои за май 2017.
37 |
38 | Условия:
39 | * Python 3.5+
40 | * Любые сторонние библиотеки
41 | * PEP8
42 | * Если останется время, то можете покрыть её тестами с помощью py.test (:
43 |
44 | Подготовить среду, установить зависимости(откроет консоль внутри контейнера)
45 | ```
46 | make getwallpapers_env
47 | ```
48 | Запустить скрипт загрузки обоев в консоли из предыдущей команды:
49 | ```
50 | ./getwallpapers.py 022018 640x480
51 | ```
52 | Запустить тесты
53 | ```
54 | make getwallpapers_test
55 | ```
56 | Особенности:
57 | * Если обои доступны в вариантах с календарём и без, утилита скачает оба.
58 | * Не все обои доступны во всех разрешениях, если конкретных обоев запрошенного разрешения нет, утилита их пропустит.
59 |
--------------------------------------------------------------------------------
/backend/Python/OstrovokTech/content-tech-task.md:
--------------------------------------------------------------------------------
1 | # Тестовое задание в Контент
2 |
3 | В Контенте мы занимаемся агрегацией отелей поставщиков (supplier),
4 | объединяя одинаковые отели от разных поставщиков в единую сущность (мета-отель).
5 |
6 | В этом задании мы предлагаем реализовать базовый сервис (API) для работы с отелями.
7 | Для дополнительного контекста и перспективы, представьте что это ключевой сервис в вашем тревел стартапе.
8 |
9 | ## Функциональность
10 |
11 | Список API, которые должны быть покрыты в этом задании:
12 |
13 | - Создать отель поставщика
14 | - Объединить 1 и более отелей поставщиков в один мета-отель
15 | - Получить список мета-отелей и входящих в них отелей
16 | - Перепривязать отель к другому мета-отелю
17 | - Получить историю привязки отеля (к каким мета-отелям в какой момент времени он был привязан)
18 |
19 | ## Требования и ограничения
20 |
21 | - Авторизация/аутентификация не нужна
22 | - Отель может быть привязан только к одному мета-отелю в один момент времени
23 | - В мета-отеле должен быть минимум один отель
24 | - Отель можно отвязать от мета-отеля и привязать к другому
25 |
26 | ## Пример данных
27 |
28 | Мета-отель:
29 |
30 | ```
31 | id: mercure_pattaya
32 |
33 | id: windways
34 | ```
35 |
36 | Отель:
37 | ```
38 | id: 1
39 | name: Mercure Pattaya
40 | supplier_id: AAA
41 |
42 | id: 2
43 | name: Mercure Pattaya
44 | supplier_id: BBB
45 |
46 | id: 3
47 | name: Windways Hotel
48 | supplier_id: AAA
49 | ```
50 |
51 | ## Оценка
52 |
53 | Цель этого тестового задания - увидеть ваш лучший/самый идиоматичный код на Python/Django.
54 |
55 | Мы ожидаем увидеть:
56 |
57 | - Документацию API
58 | - README с описанием как запустить проект, запустить тесты и т.д
59 | - Чистую архитектуру, с корректной связанностью кода (decoupling), complexity isolation
60 | - Аккуратный, понятный, поддерживаемый код, с наличием комментариев к коду (если нужны)
61 | - Код на публичной платформе (github/gitlab/bitbucket)
62 | - Отсутствие "мертвого" кода (т.е пустые модули, неиспользуемые функции и параметры и т.д)
63 | - Тесты (доказательство работоспособности кода)
64 | - Реализация на Django + любой REST или RPC фреймворк, с которым вам комфортно
65 | - PostgreSQL в качестве БД (помните про блокировки, транзакции, race conditions)
66 | - Сервис корректно работает, если запущен в нескольких экземплярах (инстансах)
67 | - Проект должен запускаться через docker-compose
68 |
69 | ## Вопросы и сроки
70 |
71 | Cтрогих сроков нет, но мы хотели бы получить от вас примерную оценку времени.
72 |
73 | Не стесняйтесь задавать вопросы по заданию, если таковые возникнут.
74 |
--------------------------------------------------------------------------------
/backend/Python/Sberbank/DE_task_solution.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/backend/Python/Sberbank/DE_task_solution.docx
--------------------------------------------------------------------------------
/backend/Python/SoftwareTester/readme.md:
--------------------------------------------------------------------------------
1 | [](https://www.python.org/downloads/release/python-31010/)
2 |
3 | # На данный момент отбор на стажировку завершен.
4 | ## How to run app
5 | 1. up DB and broker
6 | ```shell
7 | docker compose up -d --build
8 | ```
9 | 1. install requirements
10 | 2. export env variables
11 | ```shell
12 | export $(grep -v '^#' .env | xargs)
13 | ```
14 | 4. Create DB tables and fill_handbooks
15 | ```shell
16 | python manage.py alchemy_create api
17 | python manage.py fill_handbooks
18 | ```
19 | 5. up app
20 | ```shell
21 | python manage.py runserver
22 | ```
23 | 6. up celery
24 | ```shell
25 | celery -A core.celery_config worker -l INFO
26 | ```
27 | 7. Check everything is ok
28 | ```shell
29 | curl --location 'http://127.0.0.1:8000/api/auth/auth/' \
30 | --header 'Content-Type: application/json' \
31 | --data-raw '{
32 | "engine": "email",
33 | "credentials": {
34 | "email": "super_admin@example.com",
35 | "password": "StrongPass777"
36 | }
37 | }'
38 | ```
39 | Example response
40 | ```shell
41 | {
42 | "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiMjQxNzE1YzMtY2UxMi00MTYxLTgwZGEtYmFlYmUwYzU5MGE5IiwiZXhwIjoxNjg1ODIyMjg1fQ.o45cS8Upwz562l5XNmgzaOMz3mZUe0dr8Ea7LnM_lxM",
43 | "user": {
44 | "time_created": 1685562975,
45 | "time_updated": 1685562975,
46 | "user_id": "241715c3-ce12-4161-80da-baebe0c590a9",
47 | "user_type": "SUPER_ADMIN",
48 | "email": "super_admin@example.com",
49 | "is_email_confirmed": true,
50 | "last_name": "super",
51 | "first_name": "admin",
52 | "is_confirmed": true,
53 | "is_blocked": false
54 | }
55 | }
56 | ```
57 | ## How to run tests
58 | 1. install requirements-dev.txt
59 | 2. run tests
60 | ```shell
61 | pytest tests
62 | ```
63 | # Что надо сделать
64 | 1. Скачать .zip файл себе данный репозиторий
65 | 2. Наполнить тестами на свой вкус (желательно не тратить на это больше 1-2 дней)
66 | 3. Прислать ссылку на свой репозиторий
67 | ### Приветствуется, но не обязательно:
68 | 1. использование параметризации тестов
69 | 2. использование моков
70 | 3. тесты значений в БД
71 | 4. тесты celery таски
72 | 5. организовать запуск тестов параллельно (по числу ядер на машине)
73 | 6. рефакторинг \ исправление ошибок в коде
--------------------------------------------------------------------------------
/backend/Python/SoftwareTester/software_tester-main.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/backend/Python/SoftwareTester/software_tester-main.zip
--------------------------------------------------------------------------------
/backend/Python/UpTrader/test_python.md:
--------------------------------------------------------------------------------
1 | ## Задача :
2 | ### Нужно сделать django app, который будет реализовывать древовидное меню, соблюдая следующие условия:
3 | 1) Меню реализовано через template tag
4 | 2) Все, что над выделенным пунктом - развернуто. Первый уровень вложенности под выделенным пунктом тоже развернут.
5 | 3) Хранится в БД.
6 | 4) Редактируется в стандартной админке Django
7 | 5) Активный пункт меню определяется исходя из URL текущей страницы
8 | 6) Меню на одной странице может быть несколько. Они определяются по названию.
9 | 7) При клике на меню происходит переход по-заданному в нем URL. URL может быть задан как явным образом, так и через named url.
10 | 8)На отрисовку каждого меню требуется ровно 1 запрос к БД
11 | Нужен django-app, который позволяет вносить в БД меню (одно или несколько) через админку, и нарисовать на любой нужной странице меню по названию.
12 | {% draw_menu 'main_menu' %}
13 | При выполнении задания из библиотек следует использовать только Django и стандартную библиотеку Python.
14 | При решении тестового задания у вас не должно возникнуть вопросов. Если появляются вопросы, вероятнее всего, у вас недостаточно знаний.
15 | Задание выложить на гитхаб.
16 |
--------------------------------------------------------------------------------
/backend/SocialMediaHolding/README.md:
--------------------------------------------------------------------------------
1 | ## PHP разработчик Junior+ — Тестовое задание от Social Media Holding
2 |
3 | ### Задание: Реализовать API для CRUD-операций
4 | ### Используя сайт https://dummyjson.com/docs/products
5 | * Cделать API на добавление, обновление, удаление и получение всех продуктов "iPhone"
6 | * Желательно сделать так, чтобы можно было быстро адаптировать и для recipes, posts, users
7 |
--------------------------------------------------------------------------------
/backend/SoftPro/Softpro.Тестовое_задание.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/backend/SoftPro/Softpro.Тестовое_задание.pdf
--------------------------------------------------------------------------------
/backend/ООО МСтрой/README.md:
--------------------------------------------------------------------------------
1 | # ЗАДАНИЕ
2 | Есть массив объектов, которые имеют поля id и parent, через которые их можно
3 | связать в дерево и некоторые произвольные поля.
4 | Нужно написать класс, который принимает в конструктор массив этих
5 | объектов и реализует 4 метода:
6 | - getAll() Должен возвращать изначальный массив элементов.
7 | - getItem(id) Принимает id элемента и возвращает сам объект элемента;
8 | - getChildren(id) Принимает id элемента и возвращает массив элементов,
9 | являющихся дочерними для того элемента, чей id получен в аргументе. Если у элемента нет дочерних, то должен возвращаться пустой массив;
10 | - getAllParents(id) Принимает id элемента и возвращает массив из цепочки
11 | родительских элементов, начиная от самого элемента, чей id был передан в аргументе и до корневого элемента, т.е. должен получиться путь элемента наверх дерева через цепочку
12 | родителей к корню дерева. Порядок элементов важен!
13 |
14 | ## Требования: максимальное быстродействие, следовательно, минимальное количество обходов массива при операциях, в идеале, прямой доступ к элементам без поиска их в массиве.
15 |
16 | ## Исходные данные:
17 | ```
18 | class TreeStore:
19 | pass
20 | items = [
21 | {"id": 1, "parent": "root"},
22 | {"id": 2, "parent": 1, "type": "test"},
23 | {"id": 3, "parent": 1, "type": "test"},
24 | {"id": 4, "parent": 2, "type": "test"},
25 | {"id": 5, "parent": 2, "type": "test"},
26 | {"id": 6, "parent": 2, "type": "test"},
27 | {"id": 7, "parent": 4, "type": None},
28 | {"id": 8, "parent": 4, "type": None}
29 | ]
30 | ts = TreeStore(items)
31 | ```
32 |
33 | ## Примеры использования:
34 | ```
35 | # - ts.getAll() //
36 | [{"id":1,"parent":"root"},{"id":2,"parent":1,"type":"test"},{"id":3,"parent":1,"type":"test"},{"
37 | id":4,"parent":2,"type":"test"},{"id":5,"parent":2,"type":"test"},{"id":6,"parent":2,"type":"t
38 | est"},{"id":7,"parent":4,"type":None},{"id":8,"parent":4,"type":None}]#
39 | # - ts.getItem(7) // {"id":7,"parent":4,"type":None}
40 | #
41 | # - ts.getChildren(4) // [{"id":7,"parent":4,"type":None},{"id":8,"parent":4,"type":None}]
42 | # - ts.getChildren(5) // []
43 | #
44 | # - ts.getAllParents(7) //
45 | [{"id":4,"parent":2,"type":"test"},{"id":2,"parent":1,"type":"test"},{"id":1,"parent":"root"}]
46 | ```
--------------------------------------------------------------------------------
/backend/ООО МСтрой/ЗАДАНИЕ.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hexlet/ru-test-assignments/b653c3274888b6c41dd20a4c57dfea22c71810c0/backend/ООО МСтрой/ЗАДАНИЕ.pdf
--------------------------------------------------------------------------------
/data_scientist/BST digital/README.md:
--------------------------------------------------------------------------------
1 | # Тестовое задание на позицию data scientist с уклоном в анализ геоданных:
2 |
3 | DS-гео
4 | ## Тестовое:
5 |
6 | **Задача**
7 | Фабрика производит слова, из первого четверостишья Пушкина "Во глубине сибирских руд".
8 | Каждый день на фабрику поступает заказ на одно из слов из четверостишья.
9 | Ваша задача - определить оптимальный набор букв, который нужно держать на складе для максимизации прибыли, при условиях:
10 | -каждое проданное слово приносит 40 рублей
11 | -если слово невозможно собрать фабрика платит неустойку 10 рублей
12 | -если для того, чтобы собрать слово не хватает только одной буквы, ее можно доставить экспресс доставкой за 2 рубля
13 | -стоимость хранения одной буквы на складе 1 рубль в день
14 | -в конце дня запасы букв на складе возобновляются
15 | -регистр букв не имеет значения
16 | -знаки препинания не учитываются
17 |
18 | Четверостишье, слова из которого производит фабрика:
19 | ***
20 | *Во глубине сибирских руд*
21 | *Храните гордое терпенье,*
22 | *Не пропадет ваш скорбный труд*
23 | *И дум высокое стремленье.*
24 |
25 | На выходе мы ожидаем файлик с кодом + словарь вида:
26 | {
27 | '<буква 1>' : ее количество на складе,
28 | ...
--------------------------------------------------------------------------------
/data_scientist/BST digital/data scientist task.txt:
--------------------------------------------------------------------------------
1 | Тестовое задание на позицию data scientist с уклоном в анализ геоданных:
2 |
3 | DS-гео
4 | Тестовое:
5 | Задача
6 | Фабрика производит слова, из первого четверостишья Пушкина "Во глубине сибирских руд".
7 | Каждый день на фабрику поступает заказ на одно из слов из четверостишья.
8 | Ваша задача - определить оптимальный набор букв, который нужно держать на складе для максимизации прибыли, при условиях:
9 | -каждое проданное слово приносит 40 рублей
10 | -если слово невозможно собрать фабрика платит неустойку 10 рублей
11 | -если для того, чтобы собрать слово не хватает только одной буквы, ее можно доставить экспресс доставкой за 2 рубля
12 | -стоимость хранения одной буквы на складе 1 рубль в день
13 | -в конце дня запасы букв на складе возобновляются
14 | -регистр букв не имеет значения
15 | -знаки препинания не учитываются
16 |
17 | Четверостишье, слова из которого производит фабрика:
18 | ***
19 | Во глубине сибирских руд
20 | Храните гордое терпенье,
21 | Не пропадет ваш скорбный труд
22 | И дум высокое стремленье.
23 |
24 | На выходе мы ожидаем файлик с кодом + словарь вида:
25 | {
26 | '<буква 1>' : ее количество на складе,
27 | ...
28 | '<буква n>' : ее количество на складе,
29 | }
30 | и среднюю дневную прибыль при таком наборе букв на складе
31 |
--------------------------------------------------------------------------------
/sql/airbnb/airbnb_sql_tests.md:
--------------------------------------------------------------------------------
1 | ## Задания по SQL (Airbnb)
2 |
3 | *Базы данных лежат в директории `/tests` под номером задания.*
4 |
5 | #### Сложность: легко
6 |
7 | [#74](tests/74/74.md) `Airbnb` Выведите идентификатор и признак наличия интернета в помещении. Если интернет в сдаваемом жилье присутствует, то выведите «YES», иначе «NO».
8 |
9 | #### Сложность: средняя
10 |
11 | [#59](tests/59/59.md) `Airbnb` Вывести пользователей, указавших Белорусский номер телефона.
12 |
13 | [#61](tests/61/61.md) `Airbnb` Выведите список комнат, которые были зарезервированы хотя бы на одни сутки в 12-ую неделю 2020 года.
14 |
15 | [#62](tests/62/62.md) `Airbnb` Вывести в порядке убывания популярности доменные имена 2-го уровня, используемые пользователями для электронной почты.
16 |
17 | [#64](tests/64/64.md) `Airbnb` Вывести количество бронирований по каждому месяцу каждого года, в которых было хотя бы 1 бронирование.
18 |
19 | [#65](tests/65/65.md) `Airbnb` Необходимо вывести рейтинг для комнат, которые хоть раз арендовали, как среднее значение рейтинга отзывов округленное до целого вниз.
20 |
21 | [#66](tests/66/66.md) `Airbnb` Вывести список комнат со всеми удобствами (наличие ТВ, интернета, кухни и кондиционера), а также общее количество дней и сумму...
22 |
23 | [#70](tests/70/70.md) `Airbnb` Необходимо категоризовать жилье на economy, comfort, premium по цене соответственно <= 100, 100 < цена < 200, >= 200.
24 |
25 | [#72](tests/72/72.md) `Airbnb` Выведите среднюю цену бронирования за сутки для каждой из комнат, которую бронировали хотя бы один раз.
26 |
27 | [#73](tests/73/73.md) `Airbnb` Выведите id тех комнат, которые арендовали нечетное количество раз
28 |
29 | [#76](tests/76/76.md) `Airbnb` Вывести имена всех пользователей сервиса бронирования жилья, а также два признака...
30 |
31 | [#78](tests/78/78.md) `Airbnb` Выведите всех пользователей с электронной почтой в «hotmail.com»
32 |
33 | [#79](tests/79/79.md) `Airbnb` Выведите поля id, home_type, price у всего жилья из таблицы Rooms.
34 |
35 | [#80](tests/80/80.md) `Airbnb` Создайте представление «Verified_Users» с полями id, name и email, которое будет показывает только тех пользователей...
36 |
37 | #### Сложность: высокая
38 |
39 | [#58](tests/58/58.md) `Airbnb` Добавить отзыв с рейтингом 5 на жилье, находящиеся по адресу "11218, Friel Place, New York", от имени "George Clooney"
40 |
41 | [#68](tests/68/68.md) `Airbnb` Для каждой комнаты, которую снимали как минимум 1 раз, найдите имя человека, снимавшего ее последний раз, и дату, когда он выехал
42 |
43 | [#69](tests/69/69.md) `Airbnb` Вывести идентификаторы всех владельцев комнат, что размещены на сервисе бронирования жилья и сумму, которую они заработали
44 |
45 | [#71](tests/71/71.md) `Airbnb` Найдите какой процент пользователей, зарегистрированных на сервисе бронирования, хоть раз арендовали или сдавали в аренду жилье.
--------------------------------------------------------------------------------
/sql/airbnb/tests/58/58.md:
--------------------------------------------------------------------------------
1 | Добавить отзыв с рейтингом 5 на жилье, находящиеся по адресу "11218, Friel Place, New York", от имени "George Clooney"
2 |
3 | В качестве первичного ключа (id) укажите количество записей в таблице + 1.
4 |
5 | Резервация комнаты, на которую вам нужно оставить отзыв, уже была сделана, нужно лишь ее найти.
--------------------------------------------------------------------------------
/sql/airbnb/tests/58/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/59/59.md:
--------------------------------------------------------------------------------
1 | Вывести пользователей, указавших Белорусский номер телефона. Телефонный код Белоруссии +375.
2 |
3 | Поля в результирующей таблице:
4 | `*`
--------------------------------------------------------------------------------
/sql/airbnb/tests/59/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/61/61.md:
--------------------------------------------------------------------------------
1 | Выведите список комнат, которые были зарезервированы хотя бы на одни сутки в 12-ую неделю 2020 года. В данной задаче в качестве одной недели примите период из семи дней, первый из которых начинается 1 января 2020 года. Например, первая неделя года — 1–7 января, а третья — 15–21 января.
2 |
3 | Поля в результирующей таблице:
4 | `Rooms.*`
--------------------------------------------------------------------------------
/sql/airbnb/tests/61/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/62/62.md:
--------------------------------------------------------------------------------
1 | Вывести в порядке убывания популярности доменные имена 2-го уровня, используемые пользователями для электронной почты. Полученный результат необходимо дополнительно отсортировать по возрастанию названий доменных имён.
2 |
3 | Поля в результирующей таблице:
4 | `domain
5 | count`
6 |
7 | Для эл. почты index@gmail.com доменным именем 2-го уровня будет gmail.com.
--------------------------------------------------------------------------------
/sql/airbnb/tests/62/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/64/64.md:
--------------------------------------------------------------------------------
1 | Вывести количество бронирований по каждому месяцу каждого года, в которых было хотя бы 1 бронирование. Результат отсортируйте в порядке возрастания даты бронирования.
2 |
3 | Поля в результирующей таблице:
4 | `year
5 | month
6 | amount`
7 |
8 | Используйте конструкцию "as year", "as month" и "as amount" для вывода года и месяца бронирования, количества таких бронирований соответственно.
9 |
10 | Формат ожидаемого результата запроса:
11 |
12 | | | year | month | amount |
13 | |---| -------- |-------|--------|
14 | | 1 | 2017 | 7 | 8 |
15 | | 2 | 2018 | 10 | 2 |
16 | | 3 | 2018 | 11 | 1 |
--------------------------------------------------------------------------------
/sql/airbnb/tests/64/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/65/65.md:
--------------------------------------------------------------------------------
1 | Необходимо вывести рейтинг для комнат, которые хоть раз арендовали, как среднее значение рейтинга отзывов округленное до целого вниз.
2 |
3 | Поля в результирующей таблице:
4 | `room_id
5 | rating
6 | `
7 |
8 | Используйте конструкцию "as rating" для вывода рейтинга.
--------------------------------------------------------------------------------
/sql/airbnb/tests/65/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/66/66.md:
--------------------------------------------------------------------------------
1 | Вывести список комнат со всеми удобствами (наличие ТВ, интернета, кухни и кондиционера), а также общее количество дней и сумму за все дни аренды каждой из таких комнат.
2 |
3 | Поля в результирующей таблице:
4 | `home_type
5 | address
6 | days
7 | total_fee`
8 |
9 | Используйте конструкции "as days" и "as total_fee" для вывода количества дней и суммы аренды, соответственно.
10 |
11 | Если комната не сдавалась, то количество дней и сумму вывести как 0.
--------------------------------------------------------------------------------
/sql/airbnb/tests/66/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/68/68.md:
--------------------------------------------------------------------------------
1 | Для каждой комнаты, которую снимали как минимум 1 раз, найдите имя человека, снимавшего ее последний раз, и дату, когда он выехал
2 |
3 | Поля в результирующей таблице:
4 | `room_id
5 | name
6 | end_date`
7 |
8 | Используйте конструкцию "as room_id" для вывода идентификатора комнаты
--------------------------------------------------------------------------------
/sql/airbnb/tests/68/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/69/69.md:
--------------------------------------------------------------------------------
1 | Вывести идентификаторы всех владельцев комнат, что размещены на сервисе бронирования жилья и сумму, которую они заработали
2 |
3 | Поля в результирующей таблице:
4 | `owner_id
5 | total_earn`
6 |
7 | Используйте конструкцию "as owner_id" и "as total_earn" для вывода идентификаторов владельцев и заработанной суммы соответственно.
--------------------------------------------------------------------------------
/sql/airbnb/tests/69/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/70/70.md:
--------------------------------------------------------------------------------
1 | Необходимо категоризовать жилье на economy, comfort, premium по цене соответственно <= 100, 100 < цена < 200, >= 200. В качестве результата вывести таблицу с названием категории и количеством жилья, попадающего в данную категорию
2 |
3 | Поля в результирующей таблице:
4 | `category
5 | count`
6 |
7 | Используйте конструкцию "as category" и "as count" для вывода названия категории и количества такого жилья соответственно.
8 |
9 | Формат ожидаемого результата запроса:
10 |
11 | | | category | count |
12 | |---|---------|-------|
13 | | 1 | economy | 1 |
14 | | 2 | comfort | 2 |
15 | | 3 | premium | 3 |
--------------------------------------------------------------------------------
/sql/airbnb/tests/70/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/71/71.md:
--------------------------------------------------------------------------------
1 | Найдите какой процент пользователей, зарегистрированных на сервисе бронирования, хоть раз арендовали или сдавали в аренду жилье. Результат округлите до сотых.
2 |
3 | Поля в результирующей таблице:
4 | `percent`
5 |
6 | Используйте конструкцию "as percent" для вывода процента активных пользователей. Пример формата ответа: 65.23
--------------------------------------------------------------------------------
/sql/airbnb/tests/71/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/72/72.md:
--------------------------------------------------------------------------------
1 | Выведите среднюю цену бронирования за сутки для каждой из комнат, которую бронировали хотя бы один раз. Среднюю цену необходимо округлить до целого значения вверх.
2 |
3 | Поля в результирующей таблице:
4 | `room_id
5 | avg_price`
6 |
7 | Используйте конструкцию "as avg_price" для вывода средней стоимости бронирования для комнат
--------------------------------------------------------------------------------
/sql/airbnb/tests/72/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/73/73.md:
--------------------------------------------------------------------------------
1 | Выведите id тех комнат, которые арендовали нечетное количество раз
2 |
3 | Поля в результирующей таблице:
4 | `room_id
5 | count`
6 |
7 | Используйте конструкцию "as count" для вывода количество сколько раз комнату брали в аренду
--------------------------------------------------------------------------------
/sql/airbnb/tests/73/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/74/74.md:
--------------------------------------------------------------------------------
1 | Выведите идентификатор и признак наличия интернета в помещении. Если интернет в сдаваемом жилье присутствует, то выведите «YES», иначе «NO».
2 |
3 | Поля в результирующей таблице:
4 | `id
5 | has_internet`
6 |
7 | Используйте конструкцию "AS has_internet" для вывода признака наличия интернета в помещении.
8 | Формат ожидаемого результата запроса:
9 |
10 | | | id | has_internet |
11 | |---| -------- |--------------|
12 | |1| 1 | NO |
13 | |2| 2 | YES |
--------------------------------------------------------------------------------
/sql/airbnb/tests/74/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/76/76.md:
--------------------------------------------------------------------------------
1 | Вывести имена всех пользователей сервиса бронирования жилья, а также два признака: является ли пользователь собственником какого-либо жилья (is_owner) и является ли пользователь арендатором (is_tenant). В случае наличия у пользователя признака необходимо вывести в соответствующее поле 1, иначе 0.
2 |
3 | Поля в результирующей таблице:
4 | `name
5 | is_owner
6 | is_tenant`
7 |
8 | Используйте конструкцию "AS is_owner" для отображения признака собственника жилья.
9 |
10 | Используйте конструкцию "AS is_tenant" для отображения признака арендатора
--------------------------------------------------------------------------------
/sql/airbnb/tests/76/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/78/78.md:
--------------------------------------------------------------------------------
1 | Выведите всех пользователей с электронной почтой в «hotmail.com»
2 |
3 | Поля в результирующей таблице:
4 | `*`
--------------------------------------------------------------------------------
/sql/airbnb/tests/78/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/79/79.md:
--------------------------------------------------------------------------------
1 | Выведите поля id, home_type, price у всего жилья из таблицы Rooms. Если комната имеет телевизор и интернет одновременно, то в качестве цены в поле price выведите цену, применив скидку 10%.
2 |
3 | Поля в результирующей таблице:
4 | `id
5 | home_type
6 | price`
--------------------------------------------------------------------------------
/sql/airbnb/tests/79/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/airbnb/tests/80/80.md:
--------------------------------------------------------------------------------
1 | Создайте представление «Verified_Users» с полями id, name и email, которое будет показывает только тех пользователей, у которых подтвержден адрес электронной почты.
--------------------------------------------------------------------------------
/sql/airbnb/tests/80/reviews.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE reviews (
2 | id INT,
3 | reservation_id INT,
4 | rating INT
5 | );
6 |
7 | INSERT INTO reviews (id, reservation_id, rating) VALUES (1, 1, 4);
8 | INSERT INTO reviews (id, reservation_id, rating) VALUES (2, 3, 5);
9 | INSERT INTO reviews (id, reservation_id, rating) VALUES (3, 4, 5);
10 | INSERT INTO reviews (id, reservation_id, rating) VALUES (4, 5, 5);
11 | INSERT INTO reviews (id, reservation_id, rating) VALUES (5, 8, 4);
12 | INSERT INTO reviews (id, reservation_id, rating) VALUES (6, 9, 3);
13 | INSERT INTO reviews (id, reservation_id, rating) VALUES (7, 10, 2);
14 | INSERT INTO reviews (id, reservation_id, rating) VALUES (8, 12, 2);
15 | INSERT INTO reviews (id, reservation_id, rating) VALUES (9, 13, 5);
16 | INSERT INTO reviews (id, reservation_id, rating) VALUES (10, 14, 4);
17 | INSERT INTO reviews (id, reservation_id, rating) VALUES (11, 15, 3);
18 | INSERT INTO reviews (id, reservation_id, rating) VALUES (12, 16, 2);
19 | INSERT INTO reviews (id, reservation_id, rating) VALUES (13, 17, 5);
20 | INSERT INTO reviews (id, reservation_id, rating) VALUES (14, 18, 4);
21 | INSERT INTO reviews (id, reservation_id, rating) VALUES (15, 19, 4);
22 | INSERT INTO reviews (id, reservation_id, rating) VALUES (16, 20, 4);
23 | INSERT INTO reviews (id, reservation_id, rating) VALUES (17, 21, 5);
24 | INSERT INTO reviews (id, reservation_id, rating) VALUES (18, 25, 5);
25 | INSERT INTO reviews (id, reservation_id, rating) VALUES (19, 26, 4);
26 | INSERT INTO reviews (id, reservation_id, rating) VALUES (20, 28, 1);
27 | INSERT INTO reviews (id, reservation_id, rating) VALUES (21, 29, 2);
28 | INSERT INTO reviews (id, reservation_id, rating) VALUES (22, 30, 3);
--------------------------------------------------------------------------------
/sql/alfabank/alfabank_sql_tasks.md:
--------------------------------------------------------------------------------
1 | ## Задания по SQL (Alfabank)
2 |
3 | *Базы данных лежат в директории `/tests` под номером задания.*
4 |
5 | #### Сложность: средняя
6 |
7 | [#93](tests/93/93.md) `Тестовое задание Альфа банк` Какой средний возраст клиентов, купивших Smartwatch (использовать наименование товара product.name) в 2024 году?
8 |
9 | [#94](tests/94/94.md) `Тестовое задание Альфа банк` Вывести имена покупателей, каждый из которых приобрёл Laptop и Monitor (использовать наименование товара product.name) в марте 2024 года?
--------------------------------------------------------------------------------
/sql/alfabank/tests/93/93.md:
--------------------------------------------------------------------------------
1 | Какой средний возраст клиентов, купивших Smartwatch (использовать наименование товара product.name) в 2024 году?
2 |
3 | Поля в результирующей таблице:
4 | `average_age`
5 |
6 | Формат ожидаемого результата запроса:
7 |
8 | | | average_age |
9 | |---| -------- |
10 | | 1 | 16.5 |
--------------------------------------------------------------------------------
/sql/alfabank/tests/93/customers.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE customers (
2 | customer_key INT,
3 | name VARCHAR(512),
4 | age INT
5 | );
6 |
7 | INSERT INTO customers (customer_key, name, age) VALUES
8 | (1, 'Alice', 30),
9 | (2, 'Bob', 25),
10 | (3, 'Charlie', 35),
11 | (4, 'David', 40),
12 | (5, 'Eve', 28),
13 | (6, 'Frank', 33),
14 | (7, 'Grace', 22),
15 | (8, 'Hannah', 27),
16 | (9, 'Isaac', 29),
17 | (10, 'Jack', 36);
--------------------------------------------------------------------------------
/sql/alfabank/tests/93/product_categories.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE product_categories (
2 | category_key INT,
3 | category VARCHAR(512)
4 | );
5 |
6 | INSERT INTO product_categories (category_key, category) VALUES
7 | (1, 'Computers'),
8 | (2, 'Mobile Devices'),
9 | (3, 'Tablets & E-Readers'),
10 | (4, 'Accessories');
--------------------------------------------------------------------------------
/sql/alfabank/tests/93/products.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE products (
2 | product_key INT,
3 | category_key INT,
4 | name VARCHAR(512),
5 | price INT
6 | );
7 |
8 | INSERT INTO products (product_key, category_key, name, price) VALUES
9 | (1, 1, 'Laptop', 1200),
10 | (2, 2, 'Smartphone', 800),
11 | (3, 3, 'Tablet', 600),
12 | (4, 1, 'Desktop', 1000),
13 | (5, 4, 'Monitor', 300),
14 | (6, 2, 'Smartwatch', 250),
15 | (7, 3, 'E-Reader', 180),
16 | (8, 4, 'Keyboard', 100),
17 | (9, 1, 'Mouse', 50),
18 | (10, 2, 'Charger', 25);
--------------------------------------------------------------------------------
/sql/alfabank/tests/94/94.md:
--------------------------------------------------------------------------------
1 | Вывести имена покупателей, каждый из которых приобрёл Laptop и Monitor (использовать наименование товара product.name) в марте 2024 года?
2 |
3 | Поля в результирующей таблице:
4 | `name`
5 |
6 | Формат ожидаемого результата запроса:
7 |
8 | | | name |
9 | |---| -------- |
10 | | 1 | David |
--------------------------------------------------------------------------------
/sql/alfabank/tests/94/customers.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE customers (
2 | customer_key INT,
3 | name VARCHAR(512),
4 | age INT
5 | );
6 |
7 | INSERT INTO customers (customer_key, name, age) VALUES
8 | (1, 'Alice', 30),
9 | (2, 'Bob', 25),
10 | (3, 'Charlie', 35),
11 | (4, 'David', 40),
12 | (5, 'Eve', 28),
13 | (6, 'Frank', 33),
14 | (7, 'Grace', 22),
15 | (8, 'Hannah', 27),
16 | (9, 'Isaac', 29),
17 | (10, 'Jack', 36);
--------------------------------------------------------------------------------
/sql/alfabank/tests/94/product_categories.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE product_categories (
2 | category_key INT,
3 | category VARCHAR(512)
4 | );
5 |
6 | INSERT INTO product_categories (category_key, category) VALUES
7 | (1, 'Computers'),
8 | (2, 'Mobile Devices'),
9 | (3, 'Tablets & E-Readers'),
10 | (4, 'Accessories');
--------------------------------------------------------------------------------
/sql/alfabank/tests/94/products.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE products (
2 | product_key INT,
3 | category_key INT,
4 | name VARCHAR(512),
5 | price INT
6 | );
7 |
8 | INSERT INTO products (product_key, category_key, name, price) VALUES
9 | (1, 1, 'Laptop', 1200),
10 | (2, 2, 'Smartphone', 800),
11 | (3, 3, 'Tablet', 600),
12 | (4, 1, 'Desktop', 1000),
13 | (5, 4, 'Monitor', 300),
14 | (6, 2, 'Smartwatch', 250),
15 | (7, 3, 'E-Reader', 180),
16 | (8, 4, 'Keyboard', 100),
17 | (9, 1, 'Mouse', 50),
18 | (10, 2, 'Charger', 25);
--------------------------------------------------------------------------------
/sql/domclick/domclick_sql_tests.md:
--------------------------------------------------------------------------------
1 | ## Задания по SQL (Domclick)
2 |
3 | *Базы данных лежат в директории `/tests` под номером задания.*
4 |
5 | #### Сложность: легко
6 |
7 | [#109](tests/109/109.md) `Тестовое задание ДомКлик` Выведите название страны, где находится город «Salzburg»
8 |
9 | #### Сложность: средняя
10 |
11 | [#111](tests/111/111.md) `Тестовое задание ДомКлик` Посчитайте население каждого региона. В качестве результата выведите название региона и его численность населения.
12 |
--------------------------------------------------------------------------------
/sql/domclick/tests/109/109.md:
--------------------------------------------------------------------------------
1 | Выведите название страны, где находится город «Salzburg»
2 |
3 | Поля в результирующей таблице:
4 | `country_name`
5 |
6 | Формат ожидаемого результата запроса:
7 |
8 | | | country_name |
9 | |---| -------- |
10 | |1| Germany |
--------------------------------------------------------------------------------
/sql/domclick/tests/109/cities.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE cities (
2 | id INT,
3 | name VARCHAR(512),
4 | regionid INT,
5 | population INT
6 | );
7 |
8 | INSERT INTO cities (id, name, regionid, population) VALUES
9 | (1, 'Moscow', 1, 13000000),
10 | (2, 'Saint Petersburg', 10, 5500000),
11 | (3, 'Graz', 3, 300000),
12 | (4, 'Innsbruck', 4, 132000),
13 | (5, 'Munich', 5, 1470000),
14 | (6, 'Berlin', 6, 3645000),
15 | (7, 'Kyiv', 7, 2884000),
16 | (8, 'Almaty', 8, 1850000),
17 | (9, 'Nur-Sultan', 9, 1100000),
18 | (10, 'Lviv', 2, 721301),
19 | (11, 'Salzburg', 4, 154211),
20 | (12, 'Nuremberg', 5, 518365),
21 | (13, 'Frankfurt', 5, 753056),
22 | (14, 'Hamburg', 6, 1841000),
23 | (15, 'Dresden', 6, 554649),
24 | (16, 'Leipzig', 6, 587857),
25 | (17, 'Stuttgart', 5, 634830),
26 | (18, 'Dortmund', 6, 588462),
27 | (19, 'Vienna', 4, 1897000),
28 | (20, 'Krakow', 2, 766683);
--------------------------------------------------------------------------------
/sql/domclick/tests/109/countries.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE countries (
2 | id INT,
3 | name VARCHAR(512)
4 | );
5 |
6 | INSERT INTO countries (id, name) VALUES
7 | (1, 'Russia'),
8 | (2, 'Kazakhstan'),
9 | (3, 'Ukraine'),
10 | (4, 'Austria'),
11 | (5, 'Germany');
--------------------------------------------------------------------------------
/sql/domclick/tests/109/event_types.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE event_types (
2 | id INT,
3 | name VARCHAR(512)
4 | );
5 |
6 | INSERT INTO event_types (id, name) VALUES
7 | (1, 'Holding a rally'),
8 | (2, 'Road repair'),
9 | (3, 'Snow removal'),
10 | (4, 'Concert'),
11 | (5, 'Festival'),
12 | (6, 'Exhibition'),
13 | (7, 'Conference'),
14 | (8, 'Marathon'),
15 | (9, 'Sports event'),
16 | (10, 'Parade');
--------------------------------------------------------------------------------
/sql/domclick/tests/109/regions.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE regions (
2 | id INT,
3 | name VARCHAR(512),
4 | countryid VARCHAR(512)
5 | );
6 |
7 | INSERT INTO regions (id, name, countryid) VALUES
8 | (1, 'Moscow region', 1),
9 | (2, 'Lviv region', 3),
10 | (3, 'Styria', 4),
11 | (4, 'Tyrol', 4),
12 | (5, 'Bavaria', 5),
13 | (6, 'Berlin', 5),
14 | (7, 'Kyiv region', 3),
15 | (8, 'Almaty region', 2),
16 | (9, 'Nur-Sultan region', 2),
17 | (10, 'Saint Petersburg region', 1);
--------------------------------------------------------------------------------
/sql/domclick/tests/111/111.md:
--------------------------------------------------------------------------------
1 | Посчитайте население каждого региона. В качестве результата выведите название региона и его численность населения.
2 |
3 | Поля в результирующей таблице:
4 | `region_name
5 | total_population`
6 |
7 | Формат ожидаемого результата запроса:
8 |
9 | | | region_name | total_population |
10 | |---| -------- |-------|
11 | | 1 | Bavaria | 1111111 |
12 | | 2 | Almaty region | 2222222 |
--------------------------------------------------------------------------------
/sql/domclick/tests/111/cities.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE cities (
2 | id INT,
3 | name VARCHAR(512),
4 | regionid INT,
5 | population INT
6 | );
7 |
8 | INSERT INTO cities (id, name, regionid, population) VALUES
9 | (1, 'Moscow', 1, 13000000),
10 | (2, 'Saint Petersburg', 10, 5500000),
11 | (3, 'Graz', 3, 300000),
12 | (4, 'Innsbruck', 4, 132000),
13 | (5, 'Munich', 5, 1470000),
14 | (6, 'Berlin', 6, 3645000),
15 | (7, 'Kyiv', 7, 2884000),
16 | (8, 'Almaty', 8, 1850000),
17 | (9, 'Nur-Sultan', 9, 1100000),
18 | (10, 'Lviv', 2, 721301),
19 | (11, 'Salzburg', 4, 154211),
20 | (12, 'Nuremberg', 5, 518365),
21 | (13, 'Frankfurt', 5, 753056),
22 | (14, 'Hamburg', 6, 1841000),
23 | (15, 'Dresden', 6, 554649),
24 | (16, 'Leipzig', 6, 587857),
25 | (17, 'Stuttgart', 5, 634830),
26 | (18, 'Dortmund', 6, 588462),
27 | (19, 'Vienna', 4, 1897000),
28 | (20, 'Krakow', 2, 766683);
--------------------------------------------------------------------------------
/sql/domclick/tests/111/countries.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE countries (
2 | id INT,
3 | name VARCHAR(512)
4 | );
5 |
6 | INSERT INTO countries (id, name) VALUES
7 | (1, 'Russia'),
8 | (2, 'Kazakhstan'),
9 | (3, 'Ukraine'),
10 | (4, 'Austria'),
11 | (5, 'Germany');
--------------------------------------------------------------------------------
/sql/domclick/tests/111/event_types.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE event_types (
2 | id INT,
3 | name VARCHAR(512)
4 | );
5 |
6 | INSERT INTO event_types (id, name) VALUES
7 | (1, 'Holding a rally'),
8 | (2, 'Road repair'),
9 | (3, 'Snow removal'),
10 | (4, 'Concert'),
11 | (5, 'Festival'),
12 | (6, 'Exhibition'),
13 | (7, 'Conference'),
14 | (8, 'Marathon'),
15 | (9, 'Sports event'),
16 | (10, 'Parade');
--------------------------------------------------------------------------------
/sql/domclick/tests/111/regions.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE regions (
2 | id INT,
3 | name VARCHAR(512),
4 | countryid VARCHAR(512)
5 | );
6 |
7 | INSERT INTO regions (id, name, countryid) VALUES
8 | (1, 'Moscow region', 1),
9 | (2, 'Lviv region', 3),
10 | (3, 'Styria', 4),
11 | (4, 'Tyrol', 4),
12 | (5, 'Bavaria', 5),
13 | (6, 'Berlin', 5),
14 | (7, 'Kyiv region', 3),
15 | (8, 'Almaty region', 2),
16 | (9, 'Nur-Sultan region', 2),
17 | (10, 'Saint Petersburg region', 1);
--------------------------------------------------------------------------------
/sql/samokat/samokat_sql_tests.md:
--------------------------------------------------------------------------------
1 | ## Задания по SQL (VK)
2 |
3 | *Базы данных лежат в директории `/tests` под номером задания.*
4 |
5 | #### Сложность: средняя
6 |
7 | [#97](tests/97/97.md) `Тестовое задание Самокат` Посчитать количество работающих складов на текущую дату по каждому городу. Вывести только те города, у которых количество складов более 80.
--------------------------------------------------------------------------------
/sql/samokat/tests/97/97.md:
--------------------------------------------------------------------------------
1 | Посчитать количество работающих складов на текущую дату по каждому городу. Вывести только те города, у которых количество складов более 80. Данные на выходе - город, количество складов.
2 |
3 | Поля в результирующей таблице:
4 | `city
5 | warehouse_count`
6 |
7 | Формат ожидаемого результата запроса:
8 |
9 | | | city | warehouse_count |
10 | |---| -------- |-------|
11 | | 1 | Moscow | 53 |
--------------------------------------------------------------------------------
/sql/sberbank/sberbank_sql_tests.md:
--------------------------------------------------------------------------------
1 | ## Задания по SQL (Sberbank)
2 |
3 | *Базы данных лежат в директории `/tests` под номером задания.*
4 |
5 | #### Сложность: легко
6 |
7 | [#103](tests/103/103.md) `Тестовое задание Сбербанк` Вывести список имён сотрудников, получающих большую заработную плату, чем у непосредственного руководителя.
8 |
--------------------------------------------------------------------------------
/sql/sberbank/tests/103/103.md:
--------------------------------------------------------------------------------
1 | Вывести список имён сотрудников, получающих большую заработную плату, чем у непосредственного руководителя.
2 |
3 | Поля в результирующей таблице:
4 | `name`
5 |
6 | Формат ожидаемого результата запроса:
7 |
8 | | | name |
9 | |---| -------- |
10 | | 1 | Johnathan Hall |
11 | | 2 | David Jenkins |
--------------------------------------------------------------------------------
/sql/sberbank/tests/103/departments.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE departments (
2 | id INT,
3 | name VARCHAR(512)
4 | );
5 |
6 | INSERT INTO departments (id, name) VALUES
7 | (1, 'Krause and Sons'),
8 | (2, 'Jones-White'),
9 | (3, 'Miller, Myers and Hawkins'),
10 | (4, 'Wallace-Cannon'),
11 | (5, 'James PLC'),
12 | (6, 'Bates-Ortega');
--------------------------------------------------------------------------------
/sql/vk/tests/101/101.md:
--------------------------------------------------------------------------------
1 | Выведи для каждого пользователя первое наименование, которое он заказал (первое по времени транзакции).
2 |
3 | Поля в результирующей таблице:
4 | `user_id
5 | item`
6 |
7 | Формат ожидаемого результата запроса:
8 |
9 | | | user_id | item |
10 | |---| -------- |-------|
11 | | 1 | 13811335 | cup |
12 | | 2 | 3378204101 | tie |
--------------------------------------------------------------------------------
/sql/vk/tests/99/99.md:
--------------------------------------------------------------------------------
1 | Посчитай доход с женской аудитории (доход = сумма(price * items)). Обратите внимание, что в таблице женская аудитория имеет поле user_gender «female» или «f».
2 |
3 | Поля в результирующей таблице:
4 | `income_from_female`
5 |
6 | Формат ожидаемого результата запроса:
7 |
8 | | | income_from_female |
9 | |---| -------- |
10 | |1| 41000 |
--------------------------------------------------------------------------------
/sql/vk/tests/99/purchases.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE purchases (
2 | user_id INT,
3 | user_gender VARCHAR(512),
4 | items INT,
5 | price INT
6 | );
7 |
8 | INSERT INTO purchases (user_id, user_gender, items, price) VALUES
9 | (101, 'female', 2, 24),
10 | (102, 'female', 2, 192),
11 | (103, 'm', 0, 130),
12 | (104, 'male', 3, 194),
13 | (105, 'm', 2, 65),
14 | (106, 'm', 5, 136),
15 | (107, 'f', 2, 53),
16 | (108, 'male', 1, 162),
17 | (109, 'female', 2, 144),
18 | (110, 'female', 3, 130),
19 | (111, 'male', 2, 155),
20 | (112, 'm', 2, 65),
21 | (113, 'f', 2, 199),
22 | (114, 'm', 4, 145),
23 | (115, 'male', 2, 89),
24 | (116, 'male', 3, 190),
25 | (117, 'm', 3, 161),
26 | (118, 'female', 5, 151),
27 | (119, 'male', 1, 145),
28 | (120, 'female', 2, 17),
29 | (121, 'female', 5, 47),
30 | (122, 'm', 3, 56),
31 | (123, 'male', 5, 18),
32 | (124, 'male', 1, 116),
33 | (125, 'f', 1, 87),
34 | (126, 'female', 1, 120),
35 | (127, 'm', 1, 186),
36 | (128, 'female', 0, 150),
37 | (129, 'm', 5, 14),
38 | (130, 'female', 2, 72),
39 | (131, 'female', 3, 104),
40 | (132, 'male', 3, 105),
41 | (133, 'f', 4, 122),
42 | (134, 'm', 2, 143),
43 | (135, 'f', 3, 46),
44 | (136, 'male', 5, 71),
45 | (137, 'f', 1, 176),
46 | (138, 'm', 0, 85),
47 | (139, 'female', 1, 160),
48 | (140, 'm', 3, 73),
49 | (141, 'f', 5, 100),
50 | (142, 'female', 1, 172),
51 | (143, 'female', 5, 157),
52 | (144, 'f', 1, 39),
53 | (145, 'm', 5, 115),
54 | (146, 'f', 5, 192),
55 | (147, 'f', 5, 57),
56 | (148, 'm', 3, 33),
57 | (149, 'f', 3, 52),
58 | (150, 'f', 0, 93),
59 | (151, 'm', 2, 91),
60 | (152, 'm', 0, 85),
61 | (153, 'female', 4, 198),
62 | (154, 'm', 4, 122),
63 | (155, 'female', 3, 197),
64 | (156, 'f', 2, 172),
65 | (157, 'female', 5, 179),
66 | (158, 'female', 2, 58),
67 | (159, 'f', 4, 143),
68 | (160, 'f', 1, 13);
--------------------------------------------------------------------------------
/sql/vk/vk_sql_tests.md:
--------------------------------------------------------------------------------
1 | ## Задания по SQL (VK)
2 |
3 | *Базы данных лежат в директории `/tests` под номером задания.*
4 |
5 | #### Сложность: легко
6 |
7 | [#99](tests/99/99.md) `Тестовое задание VK` Посчитай доход с женской аудитории
8 |
9 | #### Сложность: средняя
10 |
11 | [#101](tests/101/101.md) `Тестовое задание VK` Выведи для каждого пользователя первое наименование, которое он заказал (первое по времени транзакции).
12 |
--------------------------------------------------------------------------------