К собеседованию на аналитика данных за день
62 subscribers
18 photos
5 links
Будем разбирать вопросы, которые встречаются на собеседованиях по аналитике данных и data science.

Ищи разборы по хэштегам:
#sql
#python
#статистика
#алгоритмы
#машинное_обучение
Download Telegram
Задача 5

Сегодня легкая задача😁не ленимся 😁 Независимые и зависимые события 😁

Какова вероятность вытащить две карты (из одной колоды) одной масти?
❤1
Задача номер 5 . правильный ответ Р=312/1326=12/51≈0,2353

Подробный разбор в комментариях.
👍2
С чего начать изучать комбинаторику!

Не вредные советы.

Комбинаторику начинают учить еще в школе. Поэтому мы тоже начнем с обзора источников для школьников.

1. Must read на все времена!
Виленкин Н.Я. — Комбинаторика

Классическая и очень понятная книжка, где объясняются правила сложения, умножения, перестановки, размещения и сочетания на простых примерах. Считаю надо пройти 1-4 главу. У кого нет учебника могу скинуть если оставите комментарии.

2. https://mathprofi.ru/zadachi_po_kombinatorike_primery_reshenij.html очень коротко. Можно посмотреть для первого знакомства, но потом путь все равно к Виленкину

3. Кто еще old school и помнит Сканави? Ставим 👨🏻‍🦳

Сканави М.И. — Сборник задач по элементарной математике (часть 1). Глава 9. Комбинаторика и бином Ньютона. Кто готовится к ШАДу не плохо посмотреть. Приятно что есть много задач на доказательства.
❤3👍2
ну как все посмотрели комбинаторику? На встречу вам уже летит задачка из озона

Задача 6
Есть 7 шаров: 4 красных и 3 синих. Сколько способов выбрать 3 шара так, чтобы было ровно 2 красных и 1 синий?
Задача 7

Предположим, у вас есть 2 игральных кости. Какова вероятность того, что хотя бы один раз выпадет 4?


Врываемся с независимыми событиями. Задачка совсем простая) не мудрим
Задача 8

Ну и чуть -чуть поработаем с распределениями. Вспоминаем основную формулу. Врываемся в новую неделю.


Какова вероятность выпадения одной пятерки при 7 бросаниях кубика?
Решение задачи 7.


У нас 2 кости, кидаем их одновременно один раз.
Интересующее событие: «хотя бы на одной кости выпала 4».

То есть нам подходят варианты:

* на первой кости 4, на второй — что угодно;
* на второй кости 4, на первой — что угодно;
* на обеих костях 4.

. Проще через противоположное событие

Часто такие задачи удобнее считать через событие «ничего не вышло».
Противоположное событие: на обеих костях не выпала 4.

Дальнейшее решение в картинках
задача 7.

Если сложно обратными можно решить и прямым способом.
❤1
Задача 9.

В лифт 9-этажного дома на первом этаже вошли трое. Найти вероятность того, что для их выхода лифт будет останавливаться дважды.
Разберемся с задачами где в условии прописано хотя бы 1.

Помним что тогда легче решать обратными событиями так как нас устраивают все варианты кроме одного - сгорят все
Задача 10

Сколько было пар, если в конкурсе участвовало несколько танцевальных пар и каждый пожал руку всем остальным, кроме себя и своего партнёра, а всего было сделано 20200 рукопожатий?
🧨🧨🧨🧨🧨

возьму завтра, послезавтра 2 человек на отработку мок интервью ( в конце каждой задачи будем разбирать решение ) задач на пандас, SQL.

🔥Бесплатно. 🔥
Своих тоже беру. Но будем идти по новой программе.

Хочу начать прописывать новую программу. Время подберем вместе (скину окошки). Кто хочет в комментарии отписываемся
✅ Что такое арифметическая прогрессия?

Арифметическая прогрессия — это последовательность, где каждое следующее число отличается от предыдущего на одну и ту же величину 𝑑.
Пример:
✅ 2, 5, 8, 11, 14, …

Тут 𝑑 =3
#sql

Дана таблица Employee:

* id — уникальный идентификатор сотрудника (PRIMARY KEY)
* salary — зарплата сотрудника

Напишите SQL-запрос, который возвращает вторую по величине уникальную (distinct) зарплату из таблицы Employee.

Требования:
Если второй уникальной зарплаты нет, верните NULL.
Результат должен содержать одну строку и один столбец с названием SecondHighestSalary.
❤1⚡1
Идея в том, что мы сортируем уникальные зарплаты по убыванию и берём вторую строку.

Убираем повторы зарплат с помощью DISTINCT
Сортируем по убыванию с помощью ORDER BY salary DESC
LIMIT 1 OFFSET 1 значит:
* OFFSET 1 = пропусти первую строку (самую большую зарплату).
* LIMIT 1 = возьми ровно одну следующую строку.

задача с Литкода https://leetcode.com/problems/second-highest-salary/submissions/1932996097/
Эту уже сами! Вспоминаем оконки

Дана Таблица: Scores

* id — первичный ключ (уникальное значение).
Каждая строка содержит результат (score) одной игры.
* score — число с плавающей точкой с двумя знаками после запятой.

Напишите SQL-запрос, который вычисляет ранг (место в рейтинге) для каждого значения score по правилам:

* Очки (score) нужно ранжировать от большего к меньшему.
* Если у двух записей одинаковый score, у них должен быть одинаковый ранг.
* После ничьей следующий ранг должен быть следующим целым числом подряд, то есть без пропусков (без “дыр” в нумерации).

Верните таблицу результатов, отсортированную по score по убыванию.

Формат результата: столбцы score и rank.
📌 ROW_NUMBER vs RANK vs DENSE_RANK (оконные функции)

Все три функции нумеруют строки внутри окна OVER (...), но по-разному ведут себя при одинаковых значениях сортировки.

✅ ROW_NUMBER() — всегда выдаёт уникальный номер каждой строке
Пример: 1, 2, 3, 4

✅ RANK() — одинаковым значениям даёт одинаковый ранг, но дальше делает разрыв (пропуск)
Пример: 1, 1, 3, 4

✅ DENSE_RANK() — как RANK(), но без разрывов
Пример: 1, 1, 2, 3

Когда что использовать:

ROW_NUMBER() — выбрать строго одну строку (например, самый первый/последний заказ)

RANK() — «соревновательное» ранжирование с пропусками мест

DENSE_RANK() — ранжирование по группам без пропусков

🧪 Пример запроса (сравниваем функции на заказах одного клиента в один день)

SQL

SELECT
o.customer_id,
o.order_id,
o.order_ts::date AS order_day,
o.order_ts,
ROW_NUMBER() OVER (
PARTITION BY o.customer_id
ORDER BY o.order_ts::date
) AS row_number,
RANK() OVER (
PARTITION BY o.customer_id
ORDER BY o.order_ts::date
) AS rnk,
DENSE_RANK() OVER (
PARTITION BY o.customer_id
ORDER BY o.order_ts::date
) AS dense_rnk
FROM grocery.baum_orders_clean o
WHERE o.status = 'completed'
AND o.customer_id IN (
SELECT customer_id
FROM grocery.baum_orders_clean
WHERE status = 'completed'
GROUP BY customer_id, order_ts::date
HAVING COUNT(*) > 1
)
ORDER BY o.customer_id, order_day, o.order_ts, o.order_id;