ну как все посмотрели комбинаторику? На встречу вам уже летит задачка из озона
Задача 6
Есть 7 шаров: 4 красных и 3 синих. Сколько способов выбрать 3 шара так, чтобы было ровно 2 красных и 1 синий?
Задача 6
Есть 7 шаров: 4 красных и 3 синих. Сколько способов выбрать 3 шара так, чтобы было ровно 2 красных и 1 синий?
Задача 7
Предположим, у вас есть 2 игральных кости. Какова вероятность того, что хотя бы один раз выпадет 4?
Врываемся с независимыми событиями. Задачка совсем простая) не мудрим
Предположим, у вас есть 2 игральных кости. Какова вероятность того, что хотя бы один раз выпадет 4?
Врываемся с независимыми событиями. Задачка совсем простая) не мудрим
Задача 8
Ну и чуть -чуть поработаем с распределениями. Вспоминаем основную формулу. Врываемся в новую неделю.
Какова вероятность выпадения одной пятерки при 7 бросаниях кубика?
Ну и чуть -чуть поработаем с распределениями. Вспоминаем основную формулу. Врываемся в новую неделю.
Какова вероятность выпадения одной пятерки при 7 бросаниях кубика?
Решение задачи 7.
У нас 2 кости, кидаем их одновременно один раз.
Интересующее событие: «хотя бы на одной кости выпала 4».
То есть нам подходят варианты:
* на первой кости 4, на второй — что угодно;
* на второй кости 4, на первой — что угодно;
* на обеих костях 4.
. Проще через противоположное событие
Часто такие задачи удобнее считать через событие «ничего не вышло».
Противоположное событие: на обеих костях не выпала 4.
Дальнейшее решение в картинках
У нас 2 кости, кидаем их одновременно один раз.
Интересующее событие: «хотя бы на одной кости выпала 4».
То есть нам подходят варианты:
* на первой кости 4, на второй — что угодно;
* на второй кости 4, на первой — что угодно;
* на обеих костях 4.
. Проще через противоположное событие
Часто такие задачи удобнее считать через событие «ничего не вышло».
Противоположное событие: на обеих костях не выпала 4.
Дальнейшее решение в картинках
задача 7.
Если сложно обратными можно решить и прямым способом.
Если сложно обратными можно решить и прямым способом.
❤1
Задача 9.
В лифт 9-этажного дома на первом этаже вошли трое. Найти вероятность того, что для их выхода лифт будет останавливаться дважды.
В лифт 9-этажного дома на первом этаже вошли трое. Найти вероятность того, что для их выхода лифт будет останавливаться дважды.
Задача 10
Сколько было пар, если в конкурсе участвовало несколько танцевальных пар и каждый пожал руку всем остальным, кроме себя и своего партнёра, а всего было сделано 20200 рукопожатий?
Сколько было пар, если в конкурсе участвовало несколько танцевальных пар и каждый пожал руку всем остальным, кроме себя и своего партнёра, а всего было сделано 20200 рукопожатий?
🧨🧨🧨🧨🧨
возьму завтра, послезавтра 2 человек на отработку мок интервью ( в конце каждой задачи будем разбирать решение ) задач на пандас, SQL.
🔥Бесплатно. 🔥
Своих тоже беру. Но будем идти по новой программе.
Хочу начать прописывать новую программу. Время подберем вместе (скину окошки). Кто хочет в комментарии отписываемся
возьму завтра, послезавтра 2 человек на отработку мок интервью ( в конце каждой задачи будем разбирать решение ) задач на пандас, SQL.
🔥Бесплатно. 🔥
Своих тоже беру. Но будем идти по новой программе.
Хочу начать прописывать новую программу. Время подберем вместе (скину окошки). Кто хочет в комментарии отписываемся
✅ Что такое арифметическая прогрессия?
Арифметическая прогрессия — это последовательность, где каждое следующее число отличается от предыдущего на одну и ту же величину 𝑑.
Пример:
✅ 2, 5, 8, 11, 14, …
Тут 𝑑 =3
Арифметическая прогрессия — это последовательность, где каждое следующее число отличается от предыдущего на одну и ту же величину 𝑑.
Пример:
✅ 2, 5, 8, 11, 14, …
Тут 𝑑 =3
#sql
Дана таблица Employee:
* id — уникальный идентификатор сотрудника (PRIMARY KEY)
* salary — зарплата сотрудника
Напишите SQL-запрос, который возвращает вторую по величине уникальную (distinct) зарплату из таблицы Employee.
Требования:
Если второй уникальной зарплаты нет, верните NULL.
Результат должен содержать одну строку и один столбец с названием SecondHighestSalary.
Дана таблица 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/
Убираем повторы зарплат с помощью 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.
Дана Таблица: 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() — ранжирование по группам без пропусков
🧪 Пример запроса (сравниваем функции на заказах одного клиента в один день)
Все три функции нумеруют строки внутри окна 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;
# sql
Дана таблица Fraud со столбцами:
*policy_id — уникальный id полиса/заявки
* state — штат
* fraud_score — скор (чем больше, тем “подозрительнее”)
Нужно: для каждого штата выбрать записи выше 95-го перцентиля по fraud_score (какие заявки попадают в верхние 5% ). Отсортировать результат так:
* state по возрастанию
* fraud_score по убыванию
* policy_id по возрастанию
Дана таблица Fraud со столбцами:
*policy_id — уникальный id полиса/заявки
* state — штат
* fraud_score — скор (чем больше, тем “подозрительнее”)
Нужно: для каждого штата выбрать записи выше 95-го перцентиля по fraud_score (какие заявки попадают в верхние 5% ). Отсортировать результат так:
* state по возрастанию
* fraud_score по убыванию
* policy_id по возрастанию
Один из вариантов решения. Но не единственный.
Сначала внутри каждого штата мы ранжируем заявки по fraud_score от большего к меньшему:
Что делает
?
Разбивает все строки на группы по штатам.
То есть рейтинг считается отдельно внутри каждого штата.
Что делает ORDER BY fraud_score DESC?
Сортирует заявки внутри штата так, что самые большие fraud_score идут первыми.
Что возвращает PERCENT_RANK()?
Функция показывает относительную позицию строки в ранжированном списке.
Значение лежит в диапазоне от 0 до 1.
❗️❗️PERCENT_RANK() — это не совсем то же самое, что “взять ровно 5% строк”.❗️❗️
* функция работает через ранги
* одинаковые значения fraud_score получают одинаковый ранг
* поэтому строк в результате может быть не ровно 5%
То есть этот запрос отвечает на вопрос:
*какие заявки попадают в верхние 5% ранга
*но не - как взять ровно верхние 5% записей по количеству
в комментариях еще одно решение
SELECT
policy_id,
state,
fraud_score
FROM (
SELECT
policy_id,
state,
fraud_score,
PERCENT_RANK() OVER (
PARTITION BY state
ORDER BY fraud_score DESC
) AS pr
FROM Fraud
) t
WHERE pr <= 0.05
ORDER BY
state ASC,
fraud_score DESC;
Сначала внутри каждого штата мы ранжируем заявки по fraud_score от большего к меньшему:
PERCENT_RANK() OVER (
PARTITION BY state
ORDER BY fraud_score DESC
)
Что делает
PARTITION BY state
?
Разбивает все строки на группы по штатам.
То есть рейтинг считается отдельно внутри каждого штата.
Что делает ORDER BY fraud_score DESC?
Сортирует заявки внутри штата так, что самые большие fraud_score идут первыми.
Что возвращает PERCENT_RANK()?
Функция показывает относительную позицию строки в ранжированном списке.
Значение лежит в диапазоне от 0 до 1.
❗️❗️PERCENT_RANK() — это не совсем то же самое, что “взять ровно 5% строк”.❗️❗️
* функция работает через ранги
* одинаковые значения fraud_score получают одинаковый ранг
* поэтому строк в результате может быть не ровно 5%
То есть этот запрос отвечает на вопрос:
*какие заявки попадают в верхние 5% ранга
*но не - как взять ровно верхние 5% записей по количеству
в комментариях еще одно решение