Simulative – Telegram
7.37K subscribers
1.71K photos
71 videos
1 file
1.27K links
Привет! Мы — образовательная платформа в сфере аналитики Simulative: simulative.ru

Создаём курсы-симуляторы, где обучаем не на «апельсинках», а на кейсах из реального бизнеса.

Наш уютный чат: @itresume_chat
Поддержка: @simulative_support
Download Telegram
🎉 Симулятору «Аналитик данных» — год! 🎉

Приветствуем!

Сегодня нашему флагманскому продукту — Симулятору «Аналитик данных» — исполняется целый год!

За эти 365 дней мы проделали кучу итераций и обновлений, чтобы сделать Симулятор еще лучше, и сегодня хотим поделиться с вами нашими достижениями:

◾️ Увеличили количество кейсов и задач — теперь для обучения стало еще больше простора и практики. Например, в модуле по Python только в первых 7 уроках у нас более 100 задач.

◾️ Расширили способы оплаты обучения — принимаем оплату с российских и зарубежных карт. Также ввели беспроцентную рассрочку на 24 месяца 💪🏻

◾️ Добавили персонального куратора-мотиватора — теперь каждый точно дойдет до конца обучения и не заскучает на середине пути 😅

◾️ Открыли доступ на пожизненное обновление материала — учитесь в любое время дня и ночи, материалы всегда будут актуальными и идти в ногу со временем!

🏆 Большие изменения произошли и в составе нашей команды!

Мы расширили команду экспертов по аналитике данных, чтобы помочь вам решать ваши задачи и ответить на любые вопросы, с которыми вы столкнетесь в процессе обучения в Симуляторе.

К нам присоединились:

🔸 Кожевникова Кристина (Head of HR Магнит, ex-Google)
🔸 Астанков Дмитрий (Senior MLOps Engineer в Zvuk, ex-Яндекс, ex-Akvelon)

Но это еще не все!

Мы приглашаем вас принять участие в персональной онлайн-экскурсии, где вы сможете увидеть наш Симулятор в действии! Вы окунетесь в атмосферу реального анализа данных, узнаете, как выглядит наша программа изнутри и как она поможет вам стать настоящим гуру-аналитиком данных 🧘‍♂️

🔗 Записаться на онлайн-экскурсию: https://forms.gle/qSyfrudojoZpodYaA

Вместе с Симулятором «Аналитик данных» вы превратите вашу работу с данными в удовольствие и покорите новые горизонты успеха! 💪💡

#simulator #analytics #data_analytics
🎉13👍52
📋 Шпаргалка для создания таблиц и баз данных в PostgreSQL

1. Проверить наличие таблицы (если она существует, то удалить ее):

DROP TABLE IF EXISTS table;

2. Создать новую таблицу:

CREATE TABLE table (
    col1 type1,
    col2 type2,
    ...
);

3. Создать базу данных (если ее нет):

CREATE DATABASE IF
NOT EXISTS database;

4. Выбрать базу данных:

\c database;

5. После выполнения всех необходимых операций, завершите запрос 😊

Это простой пример. Помимо указанных команд, вы также можете добавить ограничения (например, PRIMARY KEY, FOREIGN KEY) и индексы в вашей таблице, в зависимости от ваших потребностей.

А вот и примеры того, как создать в PostgreSQL ограничения PRIMARY KEY и FOREIGN KEY:

1. Создание PRIMARY KEY:

CREATE TABLE user (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(100) UNIQUE
);

2. Создание FOREIGN KEY:

CREATE TABLE orders (
   order_id SERIAL PRIMARY KEY,
    user_id INT,
    sales DECIMAL,
    FOREIGN KEY (user_id)
REFERENCES user (id)
);

Для наполнения таблицы данными в PostgreSQL используется оператор INSERT INTO. Вот пример того, как можно вставить данные в созданную ранее таблицу:

-- Вставка одной записи
INSERT INTO table (col1, col2)
VALUES ('val1', 'val2');

-- Вставка нескольких записей одновременно
INSERT INTO table (col1, col2)
VALUES ('val3', 'val4'),
    ('val5', 'val6');

В этом примере table - это имя вашей таблицы, col1, col2, и т. д. - это названия столбцов, в которые вы хотите вставить данные, а val1, val2, и т. д. - это фактические данные, которые вы хотите добавить.

Вы можете повторять операторы INSERT INTO для вставки необходимого количества записей в вашу таблицу 😄

#sql
_ _ _ _ _ _ _ _ _

🔥 Хотите посмотреть, как устроен наш Симулятор «Аналитик данных» и понять, как вы можете бустануть свою карьеру в аналитике с помощью обучения на реальных бизнес-кейсах?

🔗 Просто запишитесь на нашу бесплатную онлайн-экскурсию: https://forms.gle/qSyfrudojoZpodYaA
👍8🔥84🤩1
🔍 Пример ошибочно решенной задачи

Допустим, у нас есть таблица с заказами в интернет-магазине, и мы хотим найти среднюю цену заказа.

🚫 Ошибочное решение:

SELECT AVG(цена) 
FROM заказы;

Ошибка в этом запросе заключается в том, что мы пытаемся вычислить среднюю цену заказа путем применения AVG() к столбцу цена, предполагая, что это сработает корректно.

👉 Правильное решение:

Чтобы получить среднюю цену заказа, нам нужно учитывать не только столбец цена, но и количество товаров в каждом заказе. Вот как правильно это сделать:

SELECT SUM(цена*кол-во)/SUM(кол-во) 
FROM заказы;

В этой версии запроса мы умножаем цену на количество товаров в каждом заказе и затем делим сумму всех таких произведений на общее количество товаров. Это даст нам правильную среднюю цену заказа, учитывая количество товаров в каждом заказе.

📌 Урок:

Ошибкой в первом запросе было игнорирование количества товаров в заказах, что привело к неверному результату. Важно всегда внимательно анализировать задачу и участвующие данные, чтобы выбрать правильный способ решения.

#sql
🔥15👍6👎1
🤓 Повторяем вопросы к собеседованиям 😎

Чем отличается дескриптивная аналитика от предиктивной аналитики? Что такое прескриптивная аналитика?

Дескриптивная аналитика описывает прошедшие события и тренды на основе данных, в то время как предиктивная аналитика стремится делать прогнозы и предсказания на будущее на основе этих данных.

1. Дескриптивная аналитика (Denoscriptive Analytics):
- Описание: Дескриптивная аналитика описывает прошедшие события и явления на основе имеющихся данных. Это первый этап анализа данных и часто используется для понимания текущей ситуации.
- Цель: предоставить структурированное описание данных, включая статистические метрики, визуализации и сводные отчеты, чтобы сделать выводы о прошлых событиях.
- Пример: Анализ продаж за прошлый год, включая средние продажи, медианное значение, графики продаж и диаграммы.

2. Предиктивная аналитика (Predictive Analytics):
- Описание: Предиктивная аналитика использует данные из прошлого для создания моделей и прогнозирования будущих событий или результатов.
- Цель: предсказать будущие события, тренды и результаты, что может быть полезно для принятия более информированных решений.
- Пример: Прогнозирование будущих продаж на основе данных о продажах за предыдущие месяцы с использованием методов машинного обучения.

3. Прескриптивная аналитика (Prenoscriptive Analytics):
- Описание: Прескриптивная аналитика берет на себя более активную роль в принятии решений, предлагая оптимальные стратегии на основе предсказаний и целей бизнеса.
- Цель: определить, какие действия нужно предпринять, чтобы достичь желаемого результата, учитывая различные факторы и ограничения.
- Пример: Рекомендации по оптимизации рекламных бюджетов с учетом прогнозируемых продаж и ROI.

Что такое A/B-тестирование, и как оно применяется в анализе данных?

- Описание: A/B-тестирование - это метод, используемый для сравнения двух или более версий продукта, веб-сайта или маркетинговой кампании с целью определения наиболее эффективной версии на основе данных и метрик.
- Цель: Определение, какие изменения или варианты приводят к лучшим результатам в сравнении с контрольной группой.
- Пример: Сравнение двух разных версий лендинг-страницы для определения, какая версия приводит к большему числу конверсий.


Мы верим, что регулярно отвечая на вопросы, вы сможете поддерживать себя в тонусе для собеседований!

#interview_problems
_ _ _ _ _ _ _ _ _

🔥 Хотите посмотреть, как устроен наш Симулятор «Аналитик данных» и понять, как вы можете бустануть свою карьеру в аналитике с помощью обучения на реальных бизнес-кейсах?

🔗 Просто запишитесь на нашу бесплатную онлайн-экскурсию: https://forms.gle/qSyfrudojoZpodYaA
👍84🔥4
🤔 Что такое COALESCE?

Если Вы работаете с SQL, то скорее всего Вы сталкивались с выражением COALESCE. Если же Вы с ним не знакомы, то самое время сделать это сейчас - это очень крутая штука, которая пригодится Вам в решении большого количества задач. Поэтому хотим сегодня поделиться с вами этой информацией. Итак, поехали!

Начнем с самого простого - что такое COALESCE?

COALESCE - это специальное выражение, которое вычисляет по порядку каждый из своих аргументов и на выходе возвращает значение первого аргумента, который был не NULL.

📝 Пример использования:

SELECT COALESCE(NULL, NULL, 1, 2, NULL, 3)
# 1

Этот запрос вернет 1, потому что первые два аргумента NULL, а третий аргумент принимает значение отличное от NULL. Соответственно, выражение COALESCE даже не будет смотреть дальше - главное, что третий аргумент не NULL.

Другие примеры:

SELECT COALESCE(1, NULL, 2, NULL)
# 1

или

SELECT COALESCE(NULL, NULL)
# NULL

Наверно, вы поняли основной смысл. Если можно вернуть не NULL - возвращается первое непустое значение. Если нельзя - возвращается NULL.

Стоит отметить, что COALESCE используется во многих популярных СУБД: PostgreSQL, MS SQL Server, Oracle, MySQL и так далее.

🚀 Преимущества COALESCE:

- Гарантирует, что вы всегда получите значение, даже если некоторые данные отсутствуют.
- Позволяет более безопасно и удобно работать с данными, избегая ошибок из-за NULL.

Так что в следующий раз, когда вы будете иметь дело с данными, не забудьте о COALESCE! Мы уверены, он точно будет вам полезен! 💪😊

_ _ _ _ _ _ _ _

🔥 Хотите посмотреть, как устроен наш Симулятор «Аналитик данных» и понять, как вы можете бустануть свою карьеру в аналитике с помощью обучения на реальных бизнес-кейсах?

🔗 Просто запишитесь на нашу бесплатную онлайн-экскурсию: https://forms.gle/qSyfrudojoZpodYaA
👍11🔥6
Что нужно уметь и знать, чтобы устроиться аналитиком? 🔥

Нам часто задают вопрос: «А что нужно знать, чтобы быстро устроиться аналитиком в крутую компанию на хорошую зарплату?»

Мы подготовили для вас список навыков, которые вам точно нужно освоить для комфортного трудоустройства.

🧠 Знания:

- Продуктовые метрики (MAU/WAU/DAU, retention, LTV, Lifetime, CAC, CPL, CR и т.д.)
- Математическая статистика, теория вероятностей
- А/B тестирование и проверка гипотез

🧑‍💻 Навыки:

- SQL на продвинутом уровне
- Базовый синтаксис Python на высоком уровне
- Библиотеки Python для анализа данных (Numpy, Pandas)
- Библиотеки Python для визуализации данных (Matplotlib, Seaborn, Plotly)

🛠 Инструменты:

- BI-системы (Power BI, Metabase/Redash/Superset)
- Git / Github

Что еще нужно уметь?

- Приносить пользу для бизнеса. Нужно не просто уметь писать SQL-запросы, а подобрать нужный вид анализа под задачу, провести аналитику с помощью SQL и сгенерировать выводы.
- Собрать портфолио. Когда ты только в начале пути — правильно оформленное резюме/портфолио — ключ к успеху.
- Уметь проходить собеседования. Тестовые задания и технические собеседования — всегда большой стресс. Нужно иметь высокий уровень подготовки и натренированность, чтобы достойно проходить все этапы найма.

В целом, это основной арсенал, который понадобится вам при поиске работы в сфере анализа данных. Выглядит массивно, согласитесь? 🙄

Кстати, если вы только присматриваетесь к сфере аналитики или уже находитесь в процессе изучения и хотите глубже прокачать свои знания и практические скиллы, то приглашаем вас на нашу специальную программу — Симулятор «Аналитик данных» 🤩

Это большая образовательная программа, где вы в 12 модулях последовательно получаете все необходимые навыки и знания для освоения профессии аналитика данных. Вот несколько важных вещей, за счет которых ваше обучение будет намного эффективней, чем на обычном курсе:

◾️ Упор на практику — каждый урок сопровождается большим количеством практических заданий.

◾️ Бизнес-кейсы — все обучение происходит на кейсах из реального бизнеса, а вы с первого дня учитесь решать задачи, за которые работодатель готов платить большие деньги. Мы не поддерживаем обучение на «яблоках» и «апельсинах» — мы за «обучение в бою».

◾️ Комбинированный формат в каждом уроке — видеолекции, текстовые уроки, конспекты, практическая часть.

◾️ Поддержка наставника — наши преподаватели всегда готовы прийти на помощь, разъяснить непонятную тему или направить в нужном направлении.

И это далеко не все! Записывайтесь на нашу персональную онлайн-экскурсию в Симулятор “Аналитик данных” и посмотрите, как устроено обучение своими глазами 👀

👉🏻 Записаться на экскурсию — https://forms.gle/qSyfrudojoZpodYaA
7🔥6👍2👎1
😎Спойлер к задаче с War-code😎

Мы разобрали задачи war-code.ru и решили заспойлерить вам подсказку, которая пригодится вам в решении задачек 😏 Речь о функции SQL generate_series.

Чтобы не портить удовольствие от решения настоящей задачи, мы рассмотрим работу generate_series на другом примере. Давайте построим график посещения нашими пользователями сайта war-code 👨‍💻

Нам нужна таблица с датами и количеством посещений. Запрос будет выглядеть следующим образом:

SELECT
eventtime::date AS days,
COUNT(*) AS "User Visits"
FROM warcode
WHERE
eventtime > current_date -
interval '14 day'
AND eventtime <
date_trunc('day', current_date)
GROUP BY 1
ORDER BY 1;

Посмотрите на картинку 1 👀

Кажется, здесь все в порядке, но если мы внимательнее посмотрим на ось дат, то увидим, что некоторые из них отсутствуют 😱

А все дело в том, что с 10/05 по 10/07 никто не заходил на платформу, и запрос не смог ничего сгруппировать в те дни. Аналогично с 10/11 по 10/14. Такие графики могут серьезно сбить с толку, ведь не всегда можно заметить пропущенные даты. Показать такое инвесторам, конечно, здорово, но нечестно. А честно будет в подобных задачах использовать generate_series().

Как это работает?

generate_series(start, stop, step) - это функция, которая возвращает набор строк и принимает два обязательных аргумента, start и stop, и один необязательный, step.

🔵 Простейший пример, возвращающий список чисел от 1 до 5:

SELECT generate_series(1, 5) 

📅 Generate_series может принимать не только числа, но и даты (чтобы сгенерировать список дат). Тогда, в качестве шага, обязательно используйте интервал.

Вот, например, все даты от '2023-10-01' до '2023-10-14' с интервалом в один день:

SELECT generate_series(
'2023-10-01'::timestamp,
'2023-10-14'::timestamp,
'1 day'::interval)::date
AS days
;

Возвращаемся к нашему графику. Уже знаете, что мы будем делать? Мы отдельно напишем генерацию даты в CTE, а затем с помощью left join добавим таблицу с ранее рассчитанными данными:

WITH generated_days AS (
SELECT generate_series(
'2023-10-01'::timestamp,
'2023-10-10'::timestamp,
'1 day'::interval)::date
AS days
)
SELECT days, "User Visits"
FROM generated_days
LEFT JOIN (
SELECT
eventtime::date AS days,
count(*) AS "User Visits"
FROM warcode
WHERE eventtime >
current_date -
interval '14 day'
AND eventtime < date_trunc('day', current_date)
GROUP BY 1
) t USING (days)
ORDER BY 1;

Теперь в нашем итоговом сете есть несколько дней со значениями NULL в графе посещение пользователей. Cет выглядит определенно правдивее.

❗️Чтобы избежать разрывов, можно использовать coalesce() и поставить значение 0 для пустых полей.

SELECT days, COALESCE("User Visits", 0);

Итак, наш итоговый сет готов, чтобы на основе него построить график зависимости посещения пользователей от даты. Посмотрите на картинку 2.

Задача выполнена, наш сет и график соответствуют действительности.

Кажется, мы полностью вас подготовили, так что приглашаем попробовать ваши силы в задаче «Data Engineering» на war-code.ru 💪
🔥54👍3🤩1
🔥5👍1
Как тестить гипотезы быстро? 🔥

Давайте обсудим типичную задачу аналитика. Вам нужно проанализировать эффективность email-рассылок в вашей компании и предложить алгоритм:

Как писать письма, которые продают

Ок, есть задача - надо делать. Для начала, разобьем письма на значимые признаки. Например:

* Тема письма
* Содержание письма (полезность, информация про компанию, акция)
* Call to action (купи, подпишись, заполни форму, перейди по ссылке)
* Стилистика (формальная, мемная, casual)

А теперь нужно протестировать, что работает лучше. Стандартный подход - забить болт запускать A/B тесты. То есть делить всю базу подписчиков на 2 равных группы и тестировать 2 разных заголовка (остальное одинаковое). Потом еще 2 разных заголовка. Потом 2 победителя между собой. Потом то же самое для остальных признаков.

Если рассылки вы делаете 1-2 раза в неделю - можете представить, сколько времени займет такой тест?... Одним словом - много. Его результат будет уже просто неактуален.

И как быть? 🧐

Есть способ решения этой проблемы - MVT или многопараметрическое тестирование. Это фреймворк, который обязан знать каждый аналитик - он сокращает время на тесты в десятки раз и существенно повышает качество теста.

Подробно про MVT и как его использовать рассказал наш CEO, Андрон, в своем телеграм-канале.

🔗 Ссылка на пост:
https://news.1rj.ru/str/andron_233/8

Андрон много пишет про аналитику, метрики и делится практическим опытом. Если вы интересуетесь аналитикой, то обязательно подпишитесь по ссылке ниже.

🔗 Ссылка на канал: https://news.1rj.ru/str/andron_233

P.S. Сегодня вышел новый пост про ABCD-сегментацию клиентов, а скоро будет новый про аналитику в SMM и гранулярность признаков 😉
🔥8👍75
🖐 Всем привет!

Мы на днях обсуждали, какие каналы читают наши сотрудники и когда уделяют время самообразованию 📚

🕰 Оказалось, наш аналитик добирается до соц сетей только перед сном, а вот преподаватель блока по математике заряжается контентом по утрам. А вы что скажете?

Проголосуйте в опросе 😃
😁3🔥2
👨‍🏫 Кстати, вот несколько каналов, в которые мы активно заглядываем:

🔹 https://news.1rj.ru/str/prometriki
🔹 https://news.1rj.ru/str/andron_233
🔹 https://news.1rj.ru/str/data_new_gold

📖 А какие образовательные каналы вам нравятся? Пишите в комментариях 👇
6🔥4
🔥 Базовая Шпаргалка по Работе с Файлами в Python 🔥

Работа с файлами в Python - это важная часть обработки данных и автоматизации задач. Мы подготовили для вас базовую шпаргалку с основными операциями для работы с файлами.

Открытие файла для чтения
Чтение по строкам
Запись в файл
Добавление в файл
Чтение и запись в бинарных файлах
Работа с контекстом
Проверка наличия файла
Удаление файла
Создание директори
Список файлов в директории
Использование библиотеки shutil
Использование библиотеки os

И для удобства мы сделали для вас notebook 😊

Сохраняйте и пользуйтесь 👇
https://colab.research.google.com/drive/1CqADXAdImiAQ9VIYYzYGdwIuiXQrAF7K?usp=sharing

Если у вас есть какие-либо дополнения, не стесняйтесь оставлять в комментариях!

#python
👍11🔥73
Ищем junior-аналитика к себе в команду! 🔥

У нас сегодня огненная новость - ищем в команду на один из наших проектов заряженного junior-аналитика, который готов впитывать кучу новой информации и быстро развиваться на стыке аналитики и Data Science.

Требования к кандидату:

- Знание Python + Pandas - обязательно
- Английский на уровне чтения литературы и документации - обязательно
- Базовое знание статистики и математики - приветствуется
- Опыт работы с базовыми алгоритмами DS (PCA, ANOVA, кластеризация и т.д.) - приветствуется

Все необходимые знания можно добрать в процессе - главное владеть питоном и быть готовым быстро обучаться
🙂

Чем предстоит заниматься:

Мы строим продукт на стыке маркетинга и аналитики, который позволяет рекламодателям экономить миллоны бюджета за счет data-driven маркетинга. Мы умеем разбирать рекламные креативы на десятки признаков - слова, объекты, цвета и т.д. Ваша задача - под руководством опытного наставника генерировать идеи, тестировать разные алгоритмы на этих данных и улучшать продукт.

Задачи бомбически интересные, беклог полон идей + это классная возможность стартануть карьеру в международном стартапе с возможностью быстрого перехода в Data Science.

Что мы предлагаем:

- Обучение в бою и быстрый профессиональный рост с нуля до опытного аналитика/DS под руководством опытного наставника
- Комфортные условия труда - удаленка, гибкий график, з/п по договоренности
- Крутая строчка в резюме + рекомендации от CEO международного стартапа
- Возможность быстро вырасти внутри компании и получить опцион
- Никакой бюрократии, общение напрямую с CTO, совместные мозгоштурмы и полный креатив

Если вам заходит - скорей отправляйте свое резюме нашему CEO Андрону в личку + напишите пару слов, почему мы должны выбрать именно вас.

P.S. Вакансия горящая, принимать решение будем быстро, так что не затягивайте 😉

P.P.S. Не тратьте много времени на резюме - лучше расскажите, почему вы классный и почему мы сработаемся.
🔥8👍71
🔥 Разбор вопросов из актуального теста от компании Kaspersky 🚀

Недавно Касперский проводил входные тестирования на стажировку, и мы решили для вас эти тесты и сейчас поделимся разбором части вопросов.

А когда этот пост наберет 15 огоньков, разберем с вами продолжение этого теста.

Вопрос 1: Выберите запросы, которые не упадут с ошибкой.

1. Все вернут ошибку
2. SELECT ID, NAME, COUNT(*) FROM T1 GROUP BY ID, NAME;
3. SELECT COUNT(ID), * FROM T1 GROUP BY (ID);
4. SELECT COUNT(ID), * FROM T1 GROUP BY (ID) HAVING AGE>18;
5. SELECT * FROM T1 GROUP BY (COL1);
6. SELECT COUNT(ID) FROM T1 HAVING AGE>18;

Ответы и объяснения:

1. SELECT ID, NAME, COUNT(*) FROM T1 GROUP BY ID, NAME; - Не вызовет ошибку.

Этот запрос выберет уникальные комбинации столбцов ID и NAME из таблицы T1, подсчитает количество строк в каждой комбинации и выведет результат.

2. SELECT COUNT(ID), * FROM T1 GROUP BY (ID); - Вызовет ошибку.

В операторе GROUP BY  указан столбец ID, который используют для группировки результатов. Но когда используется агрегатная функция COUNT(ID), SQL ожидает, что также будут указаны, какие другие столбцы должны быть включены в результат, если они не являются частью агрегации.

3. SELECT COUNT(ID), * FROM T1 GROUP BY (ID) HAVING AGE>18; - Вызовет ошибку.

Аналогично предыдущему запросу.

4. SELECT * FROM T1 GROUP BY (COL1); - Вызовет ошибку.

При использовании оператора GROUP BY, обычно требуется агрегировать столбцы, которые не включены в часть выражения GROUP BY. В данном случае, используют оператор *, чтобы выбрать все столбцы, но не предоставляете агрегатную функцию для столбцов, не включенных в GROUP BY. Такой запрос будет считаться некорректным.

5. SELECT COUNT(ID) FROM T1 HAVING AGE>18; - Вызовет ошибку.

Ошибка связана с использованием оператора HAVING, который обычно используется для фильтрации результатов агрегатных функций, примененных к данным, сгруппированным с помощью оператора GROUP BY. Но в запросе отсутствует оператор GROUP BY, поэтому использование HAVING без GROUP BY будет рассматриваться как некорректное использование.

Вопрос 2: Какого типа данных не встретишь в SQL?

1. MEDIUMINT
2. SMALLINT
3. BIGINT
4. COMMENT
5. AUTO_INCREMENT
6. NULL
7. IDENTITY
8. TINYINT
9. DECIMAL

Ответ: COMMENT, AUTO_INCREMENT, IDENTITY. Эти три опции не являются типами данных в SQL, а представляют собой различные атрибуты или свойства столбцов.

Вопрос 3: Вам необходимо очистить все содержимое таблицы. Каким запросом вы воспользуетесь?

Выберите один вариант из списка

1. DELETE FROM my_schema.old_table WHERE NAME IS NULL;
2. TRUNCATE my_schema.old_table WHERE NAME IS NULL;
3. DROP TABLE my_schema.old_table;
4. TRUNCATE my_schema.old_table;
5. DROP TABLE my_schema.old_table WHERE NAME IS NULL;

Ответы и объяснения:

1. DELETE FROM my_schema.old_table WHERE NAME IS NULL;

Этот запрос удаляет строки из таблицы, удовлетворяющие условию "WHERE NAME IS NULL". Это не полная очистка таблицы.

2. TRUNCATE my_schema.old_table WHERE NAME IS NULL;

TRUNCATE TABLE не поддерживает использование WHERE для фильтрации строк, и данная комбинация вызовет ошибку.

3. DROP TABLE my_schema.old_table;

DROP TABLE удаляет всю таблицу, а не только её содержимое.

4. TRUNCATE my_schema.old_table;

Правильный вариант для очистки содержимого таблицы. Этот запрос удалит все строки из таблицы, но оставит саму таблицу в базе данных.

5. DROP TABLE my_schema.old_table WHERE NAME IS NULL;

DROP TABLE не поддерживает использование WHERE для фильтрации строк, и данная комбинация вызовет ошибку.

Итак, правильный запрос для очистки содержимого таблицы - TRUNCATE my_schema.old_table

💥 Мы стараемся максимально подготовить вас к собеседованиям и верим в вас! Не забудь нажать огонек, чтобы мы запостили продолжение.

#sql #Kaspersky #interview_problems
🔥62👍94
📊🔍Разница между оконными и агрегатными функциями

Основное различие между оконными и агрегатными функциями заключается в том, КАК они обрабатывают данные:

Агрегатные функции сворачивают несколько строк в одну строку результата. Они выполняют операцию над набором строк, сгруппированных по определенным критериям, и возвращают единственное значение для каждой группы. Например, функции SUM(), AVG(), MAX() и MIN() являются агрегатными функциями.

Оконные функции, напротив, предоставляют результаты для каждой отдельной строки в наборе данных. Они выполняют агрегатную операцию над набором строк, но результат отображается как новое значение столбца в каждой строке. Оконные функции позволяют анализировать данные на уровне строк, не сворачивая их. Некоторые функции, такие как SUM(), AVG(), MAX() и MIN(), могут использоваться как оконные функции.

Для наглядности, представьте себе задачу: вернуть название отдела и максимальную зарплату в каждом отделе.

Используем агрегатные функции:

SELECT department,
MAX(salary) AS max_salary
FROM employee
GROUP BY department
В этом случае мы получаем одну запись на каждый отдел (см. карточку 1).

Используем оконные функции:

SELECT employee_name,
salary,
department,
MAX(salary) OVER (PARTITION BY
department) AS max_salary
FROM employee
Здесь мы получим для каждой строки в исходных данных максимальную зарплату в соответствующем отделе (см. карточку 2).

Вопрос о разнице между оконными и агрегатными функциями часто встречается на собеседованиях. Уверены, теперь вы точно ответите на этот вопрос, если столкнетесь с ним 😎

#sql #interview_problems
👍26🔥74
👍8
📊 Работа с пропущенными данными - Восстановление и удаление данных

Пропущенные данные - распространенная проблема в анализе данных. Иногда значения отсутствуют, тогда они обозначаются в виде вопросительных знаков , нулей 0️⃣ или пустых ячеек.

Например, в таблице нормализованных потерь есть пропущенное значение, обозначенное как NaN.

Давайте сначала создадим датафрейм для примера (см. в карточках под постом)

Как обработать пропущенные данные?

Каждая ситуация уникальна, и подход к ней должен быть индивидуальным. Давайте начнем с восстановления данных.

1 Способ: Восстановление данных

Самый лучший способ, конечно, восстановить данные, если у вас есть доступ к дополнительной информации. Этот способ обеспечивает наиболее точные результаты. Сделать это можно так:

# Заполнение пропущенных значений на основе дополнительной информации
df.loc[df['Модель'] == 'Outback', 'Цена'] = 17625
df.loc[df['Модель'] == 'Civic', 'Потери'] = 150
df.loc[df['Модель'] == 'Mustang', 'Тип топлива'] = 'Дизель'

Результат смотрите в карточках

2 Способ: Удаление данных

Но, к сожалению, не всегда данные можно восстановить из источника.

Тогда можно попробовать просто удалить строки или столбцы с пропущенными данными. Если вы анализируете цену и другие атрибуты вам не важны, то отсутствие информации о цене может повлиять на ваши выводы (например, при расчете среднего). В этом случае лучше удалить строки с отсутствующей ценой, чтобы не включать их в расчет.

Этот способ будет актуальным, если у вас много данных и небольшое количество пропусков.

# Удаление строк с пропущенными значениями в столбце "Цена"
df = df.dropna(subset=['Цена'])

Результат смотрите в карточках

Обработка пропущенных данных может быть сложной задачей, но правильный подход к ней позволяет извлечь более точную информацию из ваших данных.

Сегодня мы разобрали, как заполнять пропущенные данные и удалять их. А когда наберем 25 👍 , подробно расскажем вам про замену средним и случаи, когда стоит оставить пропуски 😉

#python #pandas
👍25🔥3😁2
👍15🔥4