7.34K subscribers
1.75K photos
75 videos
1 file
1.33K links
Привет! Мы — образовательная платформа в сфере аналитики Simulative: simulative.ru

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

Наш уютный чат: @itresume_chat
Поддержка: @simulative_support
Download Telegram
🔥 5 хитрых вопросов для самопроверки на Python

Сегодня вместе с ребятами из Хекслета сделали интересную подборку вопросов для проверки своих знаний по Python.

Некоторые вопросы здесь довольно хитрые, но основную массу (например, про MRO или аргументы по умолчанию) должен знать каждый. А вы знаете? 😉
👍12🔥3
Одна мелочь убивает целый SQL-запрос

Проверяя код участников нашего Симулятора по SQL, мы постоянно видим одни и те же «мелочи», из-за которых неправильно работает целый SQL-запрос. А значит аналитика проведена неправильно, компания в убытке. Давайте посмотрим несколько таких примеров - все на примере PostgreSQL.

1. COALESCE + конкатенация

В задании нужно вывести фамилию и имя пользователя, если они есть. Если нет - вывести «Дорогой друг». Большинство решает так:

select coalesce(
concat(first_name, ' ' , last_name),
'Дорогой друг'
)
from users

Но вместо ожидаемого результата мы видим либо пустую строку, либо результат конкатенации. А все потому что concat игнорирует значения NULL, следовательно результат получается отличным от NULL и coalesce не отрабатывает. Мелочь, но запрос сломался.

Чтобы избежать такой ситуации, делайте конкатенацию с помощью ||.

2. Фильтрация даты

Типичная задача - найти всех пользователей, которые пришли в заданный период времени. Дата-время регистрации при этом представлена полем timestamp.

Большинство решают задачу так:

select *
from users
where date_joined between '2022-04-01' and '2022-04-02'


А если посмотреть глазами на результат, то станет очевидно, что регистрации от 2 апреля были проигнорированы. Это связано с тем, что при сравнении идет внутреннее преобразование к '2022-04-02 00:00:00' - поэтому все регистрации 2 апреля не идут в расчет. А самое страшное, что на больших наборах данных это сложно заметить. Опять же, аналитика неправильная - запрос поломался.

Чтобы этого избежать, можно выполнить явное преобразование date_joined::date.

3. Заполнение пробелами в TO_CHAR

Знаете, какой будет результат выполнения вот этого запроса?

select to_char('2022-04-05'::date, 'month') = 'april'

Скорее всего, вы ответили True. Но нет - результатом будет False. Это связано с тем, что to_char(..., 'month') заполняет месяц пробелами до 9 символов. Поэтому True вернет вот такой запрос:

select to_char('2022-04-05'::date, 'month') = 'april    '

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

- - - - -

🔗 Освойте еще больше «фишечек» в нашем Симуляторе: ссылка
🔥21👍9
🔥 SQL-запрос для проведения ABC-анализа

Если вы работали с аналитикой ассортиментной матрицы или продаж, то вы точно сталкивались с таким методом, как ABC-анализ.

И сегодня вместе с Николаем Валиотти из Left Join мы решили подробно разобрать: как сделать ABC анализ с помощью всего одного SQL-запроса.

Интересно, что некоторые используют ABC-анализ даже в личном тайм-менеджменте. Все потому что он основан на законе Парето, который легко можно переформулировать на абсолютно любую сферу. Например:

20% ваших действий приносят 80% результата
20% ваших клиентов приносят 80% прибыли
20% вашего ассортимента приносят 80% продаж

Ну дальше вы поняли... Кстати, мы хотим сделать целую подборку подобных постов со сниппетами SQL-запросов. Как вам идея? 😏

- - - - - - - - - -
🔗 Освойте еще больше «фишечек» в нашем Симуляторе
🔥49👍192🤩2
🔥 3 хитрых вопроса для самопроверки по JavaScript

Недавно с ребятами из Хекслета мы делали подборку вопросов для самопроверки по Python. По вашим заявкам решили пойти дальше и сделали еще одну подборку - теперь по JavaScript.

Чтобы успешно пройти собес, точно нужно ответить 3/3. А сколько правильных ответов дали вы? 😉

- - - - -

🔗 Попробуйте решить Задачу о «хороших парах» на JS или Python
🔥3👍1
🔥10👍2