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

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

Наш уютный чат: @itresume_chat
Поддержка: @simulative_support
Download Telegram
🤔 Что такое 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
А мы продолжаем разбор актуального теста от компании Kaspersky 🚀😊

Когда этот пост наберет 30 🔥огоньков, подкинем еще вопросов😉

Вопрос 1


* В таблице T1 больше строк, чем в T2.
* В таблице Т2 есть все значения из T1, а в Т1 не все из T2.

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

1. SELECT * FROM T2 LEFT JOIN T1 ON (T1.key = T2.key);
2. SELECT * FROM T2 JOIN T1 ON (T1.key = T2.key);
3. SELECT * FROM T1 JOIN T2 ON (T1.key = T2.key);
4. SELECT * FROM T1;
5. SELECT * FROM T1 RIGHT JOIN T2 ON (T1.key = T2.key);
6. SELECT Т1.* FROM T2 JOIN T1 ON (T1.key = T2.key);
7. SELECT * FROM T1 LEFT JOIN T2 ON (T1.key = T2.key);

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

1. SELECT * FROM T2 LEFT JOIN T1 ON (T1.key = T2.key);
Этот запрос не подходит, так как он начинает соединение с T2 и включает все строки из T2 и только совпадающие строки из T1. Он не возвращает все строки из T1.

2. SELECT * FROM T1 JOIN T2 ON (T1.key = T2.key);
Этот запрос не подходит, так как INNER JOIN выбирает только совпадающие строки из T1 и T2, но не возвращает все строки из T1.

3. SELECT * FROM T1 JOIN T2 ON (T1.key = T2.key);
Аналогично предыдущему.

4. SELECT * FROM T1;
Этот запрос подходит, так как он выбирает все строки из T1 без соединения с T2. Это то, что нам нужно, чтобы получить все содержимое таблицы T1.

5. SELECT * FROM T1 RIGHT JOIN T2 ON (T1.key = T2.key);
Этот запрос также не подходит. Он использует RIGHT JOIN, чтобы включить все строки из T2 и только совпадающие строки из T1. Остальные строки будут заполнены значениями NULL.

6. SELECT Т1.* FROM T2 JOIN T1 ON (T1.key = T2.key);
Не подходит аналогично 2 и 3.

7. SELECT * FROM T1 LEFT JOIN T2 ON (T1.key = T2.key);
Этот запрос подходит, так как это LEFT JOIN, который включает все строки из T1 и только совпадающие строки из T2.


Вопрос 2: В результате каких запросов выведутся строки, заканчивающиеся на "lab"?

1. SELECT Name FROM T1 WHERE RIGHT(Name, 3) = 'lab'
2. SELECT Name FROM T1 WHERE Name LIKE '%lab%'
3. SELECT Name FROM T1 WHERE Name LIKE '%lab'
4. SELECT Name FROM T1 WHERE RIGHT(Name, 5) LIKE '%lab%'

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

1. SELECT Name FROM T1 WHERE RIGHT(Name, 3) = 'lab'
Подходит. Этот запрос выберет строки, в которых последние три символа в столбце `Name` равны "lab". Это подходящий вариант, если все имена завершаются на "lab". Например, "testlab" будет выбрано, но "laboratory" - нет.

2. SELECT Name FROM T1 WHERE Name LIKE '%lab%'
Не подходит. Этот запрос выберет строки, в которых в столбце `Name` есть подстрока "lab" в любой части строки.

3. SELECT Name FROM T1 WHERE Name LIKE '%lab'
Подходит. Этот запрос выберет строки, в которых столбец `Name` оканчивается на "lab". Это подходящий вариант, если вам нужны все строки, где имя заканчивается на "lab".

4. SELECT Name FROM T1 WHERE RIGHT(Name, 5) LIKE '%lab%'
Не подходит. Этот запрос выберет строки, в которых пять последних символов в столбце `Name` содержат подстроку "lab".


Вопрос 3: Расположите конструкции запроса на выдачу прав пользователю в правильном порядке
1. ON
2. GRANT
3. TO

Правильный порядок:

1. GRANT
2. ON
3. TO

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

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

-- Выдача прав на чтение таблицы "employees" пользователю "user1"
GRANT SELECT ON employees TO user1;


Удачи на собеседованиях!

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

#sql #Kaspersky #interview_problems
🔥56😱2
🔥 Бесплатный курс по Pandas!

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

Но все ли вы владеете им свободно? Pandas необходимый инструмент для аналитика данных, и мы хотим, чтобы вы были экспертом в нем. Потому наша команда недавно запустила бесплатный онлайн-курс, где на практических примерах и задачах вы прокачаете навыки и знания по работе с данными с помощью библиотеки Pandas в Python.

Что вас ждет на курсе:

◾️ начнете работать с Pandas на примере реальных аналитических задач (проведете многомерный ABC-анализ, XYZ-анализ, рассчитаете динамику продаж и т.д.)

◾️ изучите все от самых азов до продвинутых функций (например, сложная агрегация, оконные функции и т.д.)

◾️ сделаете собственный проект — ваш итоговый кейс! (реальный кейс автоматизации обработки финансовой отчетности от крупной региональной аптечной сети и добавите его к себе в портфолио)

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

👉🏻 Зарегистрироваться на курс: ссылка
🔥10👍21🎉1