Дима SQL-ит 🧑‍💻 (Аналитика данных, AI)
2.1K subscribers
51 photos
18 videos
110 links
👨‍💻 Блог аналитика данных в IT

📩 По менторству и сотрудничеству: @catdem
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🍌 Здоровье в IT: как я поддерживаю свое физическое состояние. Часть 3 — про Спорт:

Привет! В прошлых частях я рассказал про БАДы и про Менталку, на очереди спорт.
Прошлые части:
1) Про БАДы
2) Про Менталку

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

Мой топ 6 упражнений:
1️⃣ Подтягивания — одно из самых доступных и суперполезных упражнений. Задействует спину, руки, пресс и кучу неочевидных мышц. Нужен только турник: имеется почти на каждой спортивной площадке, или покупается на маркетплейсе и ставится в проеме.
2️⃣ Приседания - тоже упражнение очень полезное, разгоняет кровь, профилактика простаты (мы люди уже взрослые работаем про активно) и в целом помогает чувствовать себя в тонусе, особенно когда часто сидишь за компьютером. Делаю обычно по ощущениям, подходов 4-5, а повторений 10-30
3️⃣ Резина - чудо чудесное, беру с собой в поездки средней жесткости и поддерживать форму очень удобно. В новогодние праздники брал такую вещь с собой, не занимает много места, а упражнений можно придумать уйма, это и работа на бицепс, это и тренировка плеч, кисти и т.п. Считаю мастхев инструмент, который окупиться почти сразу же.
4️⃣ Отжимания - Ну здесь база, инвентарь это любой пол, подходит для любого человека, будь то новичок или уже на опыте, можно начать с отжимания с колен. Тоже работает большое количество мышц, то что нужно.
5️⃣ Работа с железом - здесь люблю тоже делать базу, это поднимание гантелей на бицепс. Жим от груди. Становую не делаю и приседание со штангой тоже, считаю, что обычных приседаний мне на данный момент более чем достаточно, а если хочу утяжелить приседания, то беру в руки гантели и приседаю с ними.
6️⃣ Прогулки - люблю гулять, узнавать новые локации в городе и в целом стараюсь делать базу 10000 шагов в день. Кстати, это одна из причин, чтобы заставить себя сходить в офис)

🔥Вот короткое видео с моими подтягиваниями вживую (смотрим прикрепленное видео).
Создал отдельный канал @dima_not_sqlit там будет life-контент:
Уже сейчас загрузил туда несколько видео где я занимаюсь спортом, заходим, ставим лайки, подписываемся, комментируем)

Итог: 🤩
Это база для меня, но мы все разные — ищите свои упражнения, чтобы шло в кайф. Пробуйте, экспериментируйте!

🍸 Если вы нашли пост для себя полезным, то накидывайте реакций, чтобы я понимал, что вам эта тема интересна!
❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
А как вы поддерживаете свое физическое здоровье? Занимаетесь спортом, гуляете или есть что-то еще....? Делитесь в комментариях!
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

🚬 Полный список c чем я могу помочь — mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤‍🔥12🐳7
😅 Идемпотентность и Детерминированность: что это и почему аналитику важно это знать:

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

Аналитики сейчас часто не только строят графики, но и сами настраивают сбор данных (например, в Airflow). И тут важно понимать два принципа, чтобы не получить дубли или кривые цифры в отчетах.

🔜 Детерминированность (Determinism):
Звучит сложно, а суть простая:
Если мы скармливаем функции одни и те же данные на вход, она всегда должна возвращать один и тот же результат.

Детерминированный пример в SQL:
LOWER('Dima') — всегда вернет 'dima'
Это детерминировано.


Не детерминированный пример в SQL:
• NOW() или RANDOM() — каждый раз вернут разное значение, даже если вы ничего не меняли.


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

🔜 Идемпотентность (Idempotency):
Это про то, что количество запусков скрипта не должно ломать данные.

Представьте ситуацию: Вы написали скрипт для DAG'а, который считает продажи за вчерашний день и кладет их в итоговую таблицу. Если скрипт упал на середине или вы случайно запустили его два раза подряд — что произойдет?

Плохой сценарий (Не идемпотентно): Скрипт просто берет и вставляет данные (INSERT). Запустили два раза — данные задвоились. Отчет показывает выручку x2.

Хороший сценарий (Идемпотентно): Скрипт написан так, что сколько его ни запускай, результат будет корректный.


Как это делается (Логика, которую нужно прописывать): Перед тем как загрузить данные за конкретную дату (например, за 15 января), мы сначала должны «почистить» место.

Алгоритм простой:
Сначала удаляем данные за эту дату:
DELETE FROM table WHERE date = '2026-01-15'

И только потом вставляем новые данные:
INSERT INTO table ...


Теперь, даже если вы перезапустите DAG 10 раз подряд, у вас не будет дублей. Скрипт сначала удалит старое, а потом запишет новое. В таблице всегда будут актуальные данные в единственном экземпляре.

Итог: 🤩

🍸 Сохраняйте пост, чтобы не путаться в терминах и грамотно писать код.
❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
Слышали об этих свойствах? Спрашивали у вас такое на собеседованиях? Делитесь в комментариях!
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

🚬 Менторство, консультации и подготовка к собесам — подробнее тут: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21❤‍🔥642
😉 Что такое Асинхронность? Разбираемся на простых примерах:

Друзья, всем привет. Многие, слышали понятие Асинхронность и думали: «Ну, это какая-то сложная идея, пожалуй обойду ее стороной»

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

🤩 Пример из жизни:

Представьте, что вы решили сварить суп. Вы поставили кастрюлю с водой на плиту. Вода закипит только через 10 минут.

Два варианта ваших действий:

Синхронный подход (По очереди): Вы встаете напротив плиты и 10 минут пристально смотрите на воду. Вы не отвечаете на сообщения, не режете овощи, не листаете ленту. Вы полностью заблокированы ожиданием кипятка. Глупо? Глупо.

Асинхронный подход (Эффективный): Пока вода греется, вы не ждете, а переключаетесь: чистите картошку, отвечаете в рабочем чате или читаете книгу. Как только вода закипела, вы возвращаетесь к кастрюле и закидываете мясо.

Суть простая: Вы не ждете завершения долгого процесса (нагрев воды), чтобы начать делать что-то другое. Это и есть асинхронность.

📞 Как это работает в IT и Аналитике?

В программировании это работает точно так же. Представьте, что ваш скрипт или сайт — это кассир в магазине.

Без асинхронности: Подходит покупатель и говорит: «Мне нужно узнать баланс карты» (это запрос в Базу Данных). База данных думает 5 секунд. В этом сценарии кассир просто замирает и ждет. Вся очередь за этим покупателем стоит. Сайт «висит», никто ничего не может купить, все злятся.

С асинхронностью: Покупатель просит баланс. Кассир отправляет запрос в БД и, не дожидаясь ответа, сразу начинает обслуживать следующего человека! Он как бы говорит: «Я отправил запрос, пока ждем ответ — следующий!». Как только база данных "ответила", кассир на секунду возвращается к первому покупателю и говорит результат.

Один кассир успевает обслуживать сотни людей, просто эффективно используя время, пока система "думает".

🧠 Как применять это в жизни?

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

Как стать асинхронным:
• Запустили тяжелый SQL-запрос на 15 минут? Не сидите и не смотрите, как бежит полоска загрузки. Переключайтесь на мелкие задачи (ответить на почту, навести порядок в папках и т.д.).

Итог: 🤩

🍸 Сохраняйте пост, пригодится для общего понимания.
❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
А как вы используете асинхронность? Делитесь в комментариях!
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

🚬 Менторство, консультации и подготовка к собесам — подробнее тут: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥10🐳6🔥53
🐍 Бесплатно изучаем ООП на Python: нужно ли это аналитику?

Слышал много споров на тему: «Нужно ли аналитику знать ООП (Объектно-Ориентированное Программирование) или можно обойтись без него?».

У меня эта тема давно висела в списке «хочу изучить», но руки не доходили. Я начинал проходить много курсов, но они мне не заходили: либо материал подавали слишком сложно, либо формат объяснения был скучным и непонятным.

🤨 Что я нашел:

Совсем недавно наткнулся на автора на Stepik, у которого куча бесплатных курсов с огромным количеством положительных отзывов. Решил попробовать и не пожалел.
Курсы по ООП (там две части) мне сильно понравились. Да, безусловно, там покрывается не 100% всех тонкостей ООП, но для бесплатных материалов — это одни из лучших курсов. Для базового понимания парадигмы — то, что нужно.

🤩 Важный нюанс:

Если вы не знаете базового Python, вам будет сложновато. Поэтому новичкам рекомендую сначала пройти базу. Я всегда и всем советую курсы «Поколение Python» (для начинающих и продвинутых) — это золотой стандарт.

🚬 Мой лайфхак:

Я зарегистрировался сразу на все бесплатные курсы этого автора. Почему стоит сделать так же? В перспективе курсы могут обновиться, улучшиться и стать платными. А если вы уже записаны — доступ останется у вас бесплатно.

Ссылки на курсы:
ООП Часть 1
ООП Часть 2
Все курсы автора

Итог: 🤩

🍸 Сохраняйте пост, чтобы не потерять ссылки на курсы.
А как у вас отношения с ООП? Изучали или считаете лишним? Делитесь в комментариях!
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

🚬 Готовлю вас к собесам и пишу резюме здесь: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23❤‍🔥6🐳3
🛒 Разбор задачи с собеседования Магнит OMNI:

Увидел в соседнем канале разбор задач с собеседования в Магнит OMNI и одна задачка была не разобрана и она показалось мне очень интересной — решил разобрать ее здесь, думаю многим будет полезно.

Условия задачи (это секция на языке Python):

• Представим что вы пришли в кинотеатр зал которого состоит только из одного ряда.
• Вы хотите сидеть максимально далеко от других зрителей
• Напишите функцию которая принимает на вход список мест в виде 0/1 и возвращает расстояние от оптимального места до ближайшего соседа
• Гарантируется что есть свободные места и хотя бы один зритель

Пример того, как должна работать итоговая функция:
func([1, 0, 1]) == 0
func([1, 0, 0, 0, 0, 1]) == 1
func([1, 0, 0, 0, 0, 1, 0, 0, 0, 0]) == 3
func([0, 0, 0, 0, 0, 1, 0, 0, 0, 1]) == 4


Разбор задачи по шагам:

Я сразу покажу вам решение, чтобы мы его разобрали.
def func(seats):
occupied = [i for i, seat in enumerate(seats) if seat == 1]
best = []

for i, seat in enumerate(seats):
if seat == 0:
dist = min(abs(i - j) - 1 for j in occupied)
best.append(dist)

return max(best)


Давайте разбираться, что здесь происходит:

1) Сначала проходимся по списку и находим места, которые заняты:
occupied = [i for i, seat in enumerate(seats) if seat == 1]


То есть мы проверяем, если значение равно 1, то это место занято и мы сохраним индекс этого места в списке

2) Далее посмотрим все не занятые места и найдем для каждого из них минимальное расстояние до занятого места и вычтем единицу и будем добавлять эти расстояния в список:
    for i, seat in enumerate(seats):
if seat == 0:
dist = min(abs(i - j) - 1 for j in occupied)
best.append(dist)


3) Отлично, теперь остается взять наибольшее значение из списка и получить ответ:
return max(best)


Итог: 🤩

🍸 Сохраняйте пост, чтобы успешно пройти собеседование
Как бы решили вы? Делать еще подобные разборы? Делитесь в комментариях!
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

🚬 Готовлю вас к собесам и пишу резюме здесь: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥10🐳96🔥4
🧩 Декомпозиция — универсальный способ решать любые сложные задачи:

Сегодня поговорим про навык, который отделяет сеньора от джуна, а продуктивного человека — от того, кто вечно в прокрастинации. Речь про декомпозицию.

Если по-простому: декомпозиция — это умение разбивать одну большую и страшную «непонятную задачу» на мелкие, понятные и решаемые подзадачи.

Разберем на примере кода: 👨‍💻

В Python декомпозиция начинается с функций. Вместо того чтобы писать простыню кода на 500 строк, мы выделяем логический блок, даем ему понятное имя и вызываем там, где нужно. Это база: мы избавляемся от дублей и делаем код читаемым.

Но что, если функций стало слишком много? Мы идем дальше и используем модули.
• Мы не забиваем один файл всем подряд.
• Раскидываем функции по отдельным файлам (модулям) по смыслу.

Например, функции для работы с БД — в файл
db_utils.py


Функции для парсинга — в файл
parser_tools.py


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

Как это работает в жизни: 🕺

Тот же принцип применим к любой жизненной задаче. Хотите «стать аналитиком» или «запустить свой проект»? Это абстрактные идеи, к которым непонятно как подступиться. Мозг пугается объема и саботирует работу.

Что делать: 😳

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

Вопрос: а до какой степени делить?
Ответ: всё индивидуально. Главное — не переусердствовать (не нужно дробить задачу «налить кофе» на «встать», «подойти к столу», «взять чашку»). Делите ровно до того момента, пока вы не сможете сказать: «Окей, я точно знаю, как сделать этот шаг за 30-60 минут».

Итог: 🤩

Попробуйте прямо сейчас применить это к своей самой «висячей» задаче. Возьмите листок, ручку (или чистый файл в Notion, Obsidian) и начните превращать абстрактную идею в список конкретных, понятных действий.

🍸 Сохраняйте пост, чтобы не забыть применить эту концепцию в своей жизни
А как вы справляетесь с большими задачами? Сразу бросаетесь в бой или тратите время на планирование? Делитесь в комментариях!
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

🚬 Готовлю вас к собесам и пишу резюме здесь: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17🐳4❤‍🔥3
Сбер заставил меня купить новый телефон:

В посте про итоги года я писал, что сделал несколько интересных покупок, и новый телефон — одна из них. Рассказываю, как это вышло.

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

Для понимания: ими можно оплатить до 99% стоимости товара. Но сейчас цены на площадке часто х2 от рынка, и тратить их там просто «жаба» душила.

Как всё закрутилось: 🕺
1) Пуш: Приходит пуш от Сбера — если не потрачу бонусы до конца месяца, обнулится около 8к. Я начал суетиться, составил список того, что давно хотел купить. Поковырялся пару дней и забил, решив, что время еще есть и идеи появятся.
2) Промокод: Через пару дней прилетает новый пуш: скидка 10к при покупке от 40к. Вот тут я загорелся.
3) Поиск: Найти что-то в рынке даже с промокодом было сложно — к многим товарам он просто не применялся. В какой-то момент решил посмотреть телефоны, так как свой как раз хотел обновить.

Какой телефон выбрал и почему именно Android: 🤖
Я пользуюсь Android(ами) всю свою жизнь, так сложилось, и мне принципиально было взять именно его:
• Уже привык к системе.
• Нет заморочек с установкой приложений (банков и т.д.).
• И т.п.

В итоге выбор пал на Samsung Galaxy S25 Ultra. С учетом промокода его цена была в рынке (сравнивал с известным магазином который заканчивается на «77») + я списал свои 30к бонусов. Вот так я и стал счастливым обладателем нового флагмана

Итог: 🤩

О покупке вообще не жалею: работает быстро, экран классный, камера — огонь. Кто знает, возможно, ворвусь в блогинг с Reels? Время покажет.

❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
А на какой «стороне» вы: iOS или Android? А какие покупки вы недавно сделали? Пишите в комментариях!
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

🚬 Готовлю вас к собесам и пишу резюме здесь: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤‍🔥54
🤓 Бесплатные материалы для изучения GIT — базовый минимум для аналитики:

Многие слышали о системе контроля версий, она же — GIT. Для аналитики не нужно быть гуру консоли, достаточно понять базовые команды и принципы работы.

Часто GIT в аналитике используется как стандарт для хранения всех DAGов в Airflow и совместной работы над кодом. Рекомендую следующие материалы, которых будет более чем достаточно:

Видеокурсы (видеоматериалы): 🔵
1) GIT - Полный Курс Git и GitHub Для Начинающих [4 ЧАСА]
2) Курс по Git, который делает жизнь разработчика проще
3) Основы командной разработки git в Visual Studio Code [20 МИНУТ]

Курсы на Stepik: 🔵
1) Основы Git и GitHub
2) Основы Git и консольных команд

Итог: 🤩

Освоив эту базу, вы закроете 90% рабочих задач. Если возникнут специфические вопросы, их уже можно будет точечно решать при помощи любой LLM. GIT — это стандарт, и его знание сильно упрощает жизнь в команде.

❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
Работали с GIT ? Знаете чем отличается GIT от GitHub? Пишите в комментариях!
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

🚬 Делаю резюме, которые превращаются в офферы: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20❤‍🔥8🐳6
😀 Antigravity: как Claude Opus 4.5 изменил мой подход к работе

Использование LLM скоро станет таким же базовым навыком, как SQL или Python — это мое предположение.

Я активно пользуюсь чат-версиями нейросетей, но всегда скептически относился к ассистентам, работающим прямо в IDE или через CLI (в терминале). Казалось, это только усложнит жизнь. 🎩

Но решил попробовать. Выбор пал на Antigravity от Google — там есть топовые модели, включая Opus 4.5 от Anthropic. И я изменил свое мнение. ❤️

В чем преимущество перед браузерными LLM? Всё просто: такие ассистенты позволяют:

1) Создавать файлы: Вы пишете промт, даете права, и ассистент сам создает файл с кодом.
2) Запускать и тестировать код: Нейронка может не только написать код, но и запустить его, протестировать и, если что-то пойдет не так, сама же переписать.
3) Работать с GIT: Ассистент умеет пушить код в репозиторий. (Кстати, про Git я недавно писал здесь).
4) Воспринимать контекст всего проекта: Скачали новый проект? Чтобы быстро разобраться, вам не нужно копировать код кусками в браузер. Просто задайте промт ассистенту, и он прочитает весь проект, ответит на вопросы и даст полное понимание архитектуры. Это реально чудо!
5) И масса других возможностей, которые экономят время.

Итог: 🤩

Чтобы понять всю мощь этих инструментов, нужно попробовать его самостоятельно. Antigravity с Claude Opus 4.5 — это не просто чат, это полноценный помощник, который ускоряет процесс разработки и анализа данных, берет на себя рутину и позволяет сосредоточиться на главном.

Также рекомендую и другие инструменты в сторону которых можно посмотреть (claude code, opencode, codex, cursor, gemini)

❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
Уже пробовали агентов в IDE? Какие модели используете?
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

🚬 Делаю резюме, которые превращаются в офферы: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥125🐳4
🤔 Как правильно переносить строки в Python-коде: простые правила и примеры

Думаю, часто у многих возникает один и тот же вопрос: как правильно переносить код в Python, чтобы он был и рабочий, и читаемый?
Особенно когда у вас длинные вызовы функций, цепочки методов и SQL внутри скрипта.

База, которую нужно запомнить
1. Внутри (), [], {} можно переносить строки без \.
2. Закрывающую скобку лучше ставить на отдельной строке.

А теперь рассмотрим эти правила на примерах:

1️⃣ Правильный шаблон переноса функции:

Пример правильного шаблона:
df = pd.read_excel(
"path",
sheet_name="Sheet1",
header=0,
)


Почему так удобно:
• быстро читается;
• легко добавлять новые аргументы;

Главное:
• все аргументы на одном уровне отступа;
• без "лесенки" из разного количества пробелов.

2️⃣ Важный момент: скобки не заменяют блок кода:

Вот так писать нельзя:
(
pd.read_excel("path")
text = input("Введите запрос")
)


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

Правильно:
df = pd.read_excel(
"path",
sheet_name="Sheet1",
)

text = input("Введите запрос: ")


3️⃣ Перенос цепочки методов:

1) Лучший вариант это через написания выражения в скобках: читается проще и меньше шансов сломать форматирование:
result = (
pd.read_excel(
"data.xlsx",
sheet_name="Sheet1",
)
.rename(columns={"old": "new"})
.query("amount > 0")
.groupby("category", as_index=False)
.agg(total=("amount", "sum"))
)


2) Можно через обратный слэш, но лучше как исключение:
df = pd.read_excel("dataframe.xlsx") \
.rename(columns={"name_column": "new_name_column"}) \
.describe()


Минусы \:
• случайный пробел после \ может сломать строку;
• хуже поддерживать длинные выражения.

Итог: 🤩

Переносы это не "красота ради красоты", а скорость чтения и меньше ошибок.
Рабочее правило простое: перенос через скобки + 4 пробела (табуляция) + единый стиль во всем проекте.

❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
Как вы переносите код в проектах: через скобки, \ или смешанный стиль?
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.


🚬 Пишу резюме специально для вас: mentor.dima-sqlit.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥115❤‍🔥3
🖥 SQL-шаблоны в DBeaver: как ускорить рутину аналитика за 5 минут

Большая часть SQL-работы это повторяющиеся действия.
Один из самых простых бустов продуктивности — это шаблоны в DBeaver.

Простой пример: 🟢

Часто пишем одно и то же:
select * from table_name limit 10;


Меняется только название таблицы.
Вместо ручного ввода создаем шаблон и вставляем его через
Ctrl + Alt + Space.


Как добавить такой шаблон: 🟢

• Переходим в окна (windows) → настройки (preferences) → редакторы (editors) → редактор SQL (SQL Editor) → Templates
• Там вы найдете шаблоны, которые уже идут по стандарту, по аналогии создаете свои запросы
• При этом есть возможность импортировать и экспортировать настройки (то есть вы можете быстро их восстановить в случае сбоя или поделиться своими шаблонами с коллегами, друзьями и т.д.)
• После того, как настроили шаблоны можно при написании кода использовать сочетание клавиш
Ctrl + Alt + Space

и выбрать ваш шаблон

Другие мои посты на тему ускорения вашей работы:
🟢

1️⃣Повышаем продуктивность в Jupyter Notebook - мой личный топ горячих клавиш
2️⃣ Ускоряем написание кода - горячие клавиши, которые работают в DBeaver, Jupyter Notebook, VS Code и других IDE

Итог: 🤩

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


❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
Какие SQL-шаблоны у вас самые часто используемые?
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

🚬 Готовлю вас к собесам и пишу резюме здесь: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥24❤‍🔥97
😨 Моржовый оператор := в Python: как писать код короче и быстрее

Если вы до сих пор не используете walrus operator (тот самый «морж»), то самое время это исправить. Если коротко - оператор
:=

Позволяет присвоить значение переменной прямо внутри выражения. То есть вам не нужно писать одну и ту же функцию или расчет дважды.

Что это дает на практике: 🟢
1️⃣ Меньше повторений и лишних вычислений.
2️⃣ Код становится компактнее (особенно в циклах и list comprehension).
3️⃣ Меньше нагрузка на CPU/API, если расчет «тяжелый».

Где это реально экономит время: 🟢

🛑 Меньше повторных вызовов:

Без := (вызываем функцию 2 раза):
if get_user_score(user_id) > 80:
print(get_user_score(user_id))

С := (вызываем 1 раз, результат сохраняем в score на лету):
if (score := get_user_score(user_id)) > 80:
print(score)


🛑В циклах (обработка сообщений или данных):

Классика для тех, кто работает с API или агентами:
while (msg := get_next_message()):
handle_message(msg)

Пока сообщение приходит → обрабатываем. Как только вернулся None — цикл сам завершится.

🛑 В list comprehension:

Когда нужно отфильтровать список по результату функции и этот же результат оставить в списке:
squares_gt_10 = [sq for n in nums if (sq := n * n) > 10]

Здесь мы один раз посчитали n * n, проверили его и сразу записали в результат. Красота!

Итог: 🤩

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

❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
Используете := в работе или считаете, что это только путает код?
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

🚬 Делаю резюме, которые превращаются в офферы: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥953211
📈 Скользящее среднее (Moving Average): как увидеть реальный тренд сквозь шум данных

Представьте ситуацию: вы строите бизнесу график дневной выручки, а там — настоящая «кардиограмма». В выходные пик, в понедельник провал, в праздник аномальный выброс. Смотришь на эти качели и не понимаешь: мы глобально растем или летим в пропасть?

Данные часто содержат «шум». Чтобы увидеть реальный тренд, используется Скользящее среднее (Moving Average). Если коротко: мы берем каждую дату и считаем среднее значение не только за этот день, но и за N предыдущих. График выравнивается, и скрытое становится явным.

Разберем на практике: 👨‍💻

Допустим, нам нужно сгладить дневную выручку (revenue) за 7 дней. В SQL это элегантно решается через оконные функции:
SELECT 
dt,
revenue,
AVG(revenue) OVER (
ORDER BY dt
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
) as ma_7d
FROM daily_revenue;


Здесь магия кроется в ROWS BETWEEN 6 PRECEDING AND CURRENT ROW. Мы буквально говорим базе: «для каждой даты возьми текущую строку и 6 строк до неё, а потом усредни».

🛑 Главная ловушка — проблема «Холодного старта»:

Частый вопрос на собесах:
«А что будет с первой строкой в таблице? У неё же нет истории за 6 дней!»

SQL не упадет с ошибкой. Для 1-го дня он посчитает среднее только по 1 дню. Для 2-го — по 2-м. Окно будет постепенно «накапливаться», пока не достигнет 7 дней.
Как с этим жить: Если вам нужна идеальная математическая точность для аналитики, первые дни периода (пока окно не наполнилось) на итоговом графике просто отрезают, чтобы они не искажали картину.

🟢 Как выбрать правильный интервал (окно):

Выбор зависит от того, какие циклы есть в вашем бизнесе:
1️⃣ 7 дней (МА-7) — Золотой стандарт для ритейла и e-commerce. Такое окно захватывает ровно одни выходные и пять будней. Недельная сезонность полностью исчезает с графика.
2️⃣ 28-30 дней — Отлично показывает глобальный тренд месяца. Помогает сгладить эффект от разовых промо-акций или зарплатных дней у клиентов.
3️⃣ 3 дня — Используют для метрик, где критически важно быстро заметить падение (например, конверсия в оплату после релиза новой фичи), но нужно сгладить совсем уж случайные колебания.

Итог: 🤩

🍸 Сохраняйте пост, чтобы информация была всегда под рукой.
А вы использовали скользящее среднее в своих задачах? Какие интервалы обычно берете? Пишите в комментариях!
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

🚬 Готовлю вас к собесам и пишу резюме здесь: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥25🐳8🔥662
🚀 SQL-хак: как проверить любой запрос без таблиц и админских прав за 5 секунд

Представьте ситуацию: вы пишете сложный SQL-запрос. Возможно, там хитрый CASE WHEN или другой хитрый код. Но таблицы, с которыми вы работаете, огромные, тестовой среды нет, а админские права на создание временных таблиц — отсутствуют. Как проверить, что ваш кусок кода вообще работает, не дожидаясь часа, пока выполнится запрос на 100М строк? 😨

В Python мы просто открываем консоль, накидываем тестовые данные в список и проверяем функцию. А в SQL?

Есть решение:

оператор VALUES! 🤩

SQL позволяет "создать" временную таблицу прямо внутри запроса, используя оператор VALUES. Это мгновенно, не требует никаких прав и не оставляет следов в базе.

Как это работает: 👨‍💻

Допустим, нам нужно проверить, как поведет себя CASE WHEN с разными статусами.
-- Создаем "виртуальную" таблицу прямо на лету!
SELECT
t.id,
t.status,
CASE
WHEN t.status = 'approved' THEN ' Одобрено'
WHEN t.status = 'pending' THEN ' В ожидании'
ELSE ' Отклонено'
END as status_text
FROM (
VALUES
(1, 'approved'),
(2, 'pending'),
(3, 'rejected'),
(4, 'approved'),
(5, 'unknown')
) as t(id, status);


Что здесь происходит:

• VALUES (...): Мы передаем список кортежей, где каждый кортеж — это одна строка нашей "виртуальной" таблицы.
• AS t(id, status): Мы даем этому набору данных имя t (как будто это таблица) и присваиваем имена колонкам: id и status.
• FROM (...) as t: Теперь к этому "набору данных" можно обращаться как к обычной таблице t, джойнить, применять оконные функции, фильтровать — все, что угодно!

Итог: 🤩

Оператор VALUES — это как маленькая песочница для SQL-разработчика. Позволяет мгновенно проверить любую SQL-логику, изолировать ошибку и быть уверенным в своем коде, прежде чем запускать его на "боевых" данных. Must-have для каждого, кто ценит свое время!

❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
Знали об этом трюке? Или тоже мучались, создавая временные таблицы? Делитесь в комментариях! 👇
✔️ Подпишитесь на канал, чтобы не пропустить следующие хаки.

🚬 Делаю резюме, которые превращаются в офферы: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2910🐳6❤‍🔥2
🎙 Handy: как превращать голос в текст и не терять гениальные идеи:

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

Обычно в этот момент мы либо бросаем текущую задачу и лезем записывать (теряя фокус), либо надеемся на память (и благополучно забываем всё через 5 минут). Печатать текст руками — это долго и часто лень, особенно когда ты «в потоке».

Решение: Handy. Это бесплатная утилита (работает она на основе Whisper от OpenAI) которая позволяет мгновенно превратить голос в текст, не отрываясь от работы. 🚀

👨‍💻 В чем киллер-фича для продуктивности:

1️⃣ Мгновенный ввод: Зажимаем Ctrl + Пробел (дефолтный хоткей в Handy), наговорили мысль, как только закончили отжимаем Ctrl + Пробел и Handy транскрибирует голос и сразу вставляет текст в активное поле (IDE, мессенджер, заметки).
2️⃣ Сохранение контекста: Вы тратите 5 секунд на то, чтобы «выгрузить» идею из головы, и тут же продолжаешь работать над основной задачей. Время на написание текста не тратится вообще
3️⃣ Программа всегда работает в фоне и не мешает вашим основным задачам.

🤖 Идея для мощного воркфлоу: Суммаризация через LLM

Я использую Handy, чтобы быстро «сливать» поток сознания в одну заметку в течение дня. А вечером делаю следующее:
Собираю все записанные за день мысли в один блок.

• Закидываю их в нейронку (ChatGPT/Claude).
• Прошу: «Суммаризируй эти идеи и преврати их в список задач или структуру для постов».
• Это позволяет освободить голову для работы прямо сейчас, зная, что ни одна деталь не потеряется и будет обработана позже.

Где забрать Handy: 🔥
Рекомендую попробовать всем, кто ценит свое время и хочет ускорить процесс формализации идей.

📂 Исходники на GitHub — если хотите посмотреть, как всё устроено внутри.
🌐 Официальный сайт Handy — здесь можно изучить подробности и скачать программу.

Итог: 🤩

❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
А вы пробовали накидывать идеи голосом, а потом «скармливать» их нейронке для структуры? Делитесь опытом в комментариях! 👇
✔️ Подпишитесь на канал, чтобы не пропустить следующие хаки.

🚬 Провожу консультации, подробности по ссылке: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤‍🔥9🐳4
Airflow против Crontab: когда не стоит усложнять и проще использовать Crontab?

В мире дата-инжиниринга Airflow — это стандарт. Но часто бывает так: вам нужно просто запускать один SQL-скрипт или Python-парсер раз в день. Вы идете к дата-инженерам, а там: «Создай тикет, подожди аппрува в GitLab, пропиши DAG, дождись деплоя...».

Иногда проще и быстрее вспомнить про дедовский, но рабочий метод — Crontab.

Почему все топят за Airflow? 🔵

Airflow — это мощный оркестратор, и он крут, когда:
• У вас сложные зависимости (скрипт Б должен упасть, если не отработал скрипт А).
• Нужен красивый UI, чтобы следить за статусами.
• Нужна встроенная отчетность и легкий перезапуск.
• И так далее.....

Но если ваша задача — «просто запусти этот скрипт в 8 утра», Airflow может стать лишним бюрократическим барьером.

Crontab: быстро и просто 🔵

Crontab — это встроенный в Linux планировщик задач. Его главный плюс: автономия. Вам не нужно ждать деплоя или одобрения всей команды инженеров.

Как это работает: 🔵

Вы заходите на сервер и одной строчкой в терминале прописываете расписание. Например:
0 8 * * * python3 /path/to/your_script.py


(Запуск каждый день в 08:00)

«А как же логи и алерты?» — спросите вы.
• Да, у Cron нет UI, но это решается парой строк кода:
• Логирование: Просто дописываем в скрипт базовый logging или сохраняем вывод в .txt файл.
• Алерты: Пишем простенькую функцию, которая в блоке except кидает сообщение об ошибке вам в Telegram-бота (как написать просто бота для Telegram смотрите в моем посте)

Итог: 🤩

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

❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
А вы за что: за строгий порядок в Airflow или за быструю автоматизацию на Cron? Пишите в комментариях! 👇
✔️ Подпишитесь на канал, чтобы не пропустить следующие хаки.

🚬 Провожу консультации и готовлю к собесам: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥10❤‍🔥3🐳11
👨‍💻 Бесплатный вайбкодинг с Qwen3-coder-next:

Сейчас такое время, что не использовать нейронки — это значит быть на несколько шагов назад. Все вокруг говорят про платные подписки, Cursor, Claude, Gemini или ChatGPT Plus, но не все готовы выкладывать по $20 в месяц просто «на попробовать».

Хорошая новость в том, что сейчас можно вайбкодить абсолютно бесплатно. Например, есть топовая модель от Китайцев — Qwen3-coder-next. Она заточена именно под кодинг и SQL, и по тестам выдает результаты не хуже топовых платных моделек.

Почему это нужно изучать прямо сейчас: 🔵
🔹 Порог входа: Можно бесплатно протестировать технологию и понять, «твоё» это или нет.
🔹 Рынок: Навык работы с AI становится актуальным (можно посмотреть тренд иностранных компаний, да и на нашем рынке бигтехи дают своим сотрудникам возможность пользоваться нейронками).
🔹 Скорость: То, что раньше гуглилось и делалось 30 минут, теперь пишется за 30 секунд.

Как всё это пощупать самому? 🔵
Если ты хочешь разобраться, как это работает, как всё настроить и не платить ни копейки — я нашёл отличное видео. Там по полочкам раскладывают, как поставить модель, как её тестировать и на что она реально способна в боевых условиях.

🛑 Видео: Как запустить Qwen3-coder-next

Итог: 🤩

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

❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
Уже пробовали «вайбкодить» с нейронками? Делитесь опытом в комментариях! 👇
✔️ Подпишитесь на канал, чтобы не пропустить следующие хаки.

🚬 Провожу платные консультации: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22❤‍🔥7🐳5
🏠 IT-ипотека и личные финансы: как управлять деньгами, когда вписался в крупную покупку:

Не так давно я взял IT-ипотеку (да-да, об этом будет отдельная серия постов). В такие моменты мозг невольно переключается в режим усиленного контроля: начинаешь внимательнее следить за тратами и активнее искать новые источники дохода. 💸

Круто, когда есть у кого перенять опыт. Для меня таким опытом является канал Наташи — она раскладывает по полочкам не только IT-будни, но и финансовую грамотность. Если хотите привести свои счета в порядок, рекомендую начать с этих постов:

Топ материалов по финансам: 🔵

1️⃣ Как следить за своими доходами — база для тех, кто хочет понимать, куда уходят деньги.
2️⃣ Сколько можно заработать на вкладах — реальные цифры и личный опыт.
3️⃣ Самые простые источники доп. дохода — как заставить ресурсы работать на вас.


Кстати, Наташа тоже недавно прошла через квест с IT-ипотекой. Можете почитать её историю, пока я готовлю свою:

📌 Айти-ипотека: Часть 1
📌 Айти-ипотека: Часть 2

Итог: 🤩
Управление финансами — это такой же хард-скилл, как SQL или Python. Чем раньше начнете его прокачивать, тем спокойнее будете чувствовать себя при любом курсе валют или ипотечной ставке.


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
10🐳95
🐍 Рабочий кейс: как декораторы спасают мои выгрузки данных:

У нас на проекте данные постоянно перекладываются из одной СУБД в другую почти в режиме реального времени и если попасть на этот момент во время выгрузки, то выпадает ошибка и приходится перезапускать скрипт, а что если нужно выгрузить большой объема данных? Сидеть, смотреть и ручками все контролировать не наш вариант 👨‍💻

Чтобы не обкладывать каждую функцию громоздкими try-except и не перезапускать всё руками, я использую декораторы. Давайте разберемся, что такое декораторы.

Посмотрим на максимально простой пример:

def retry(func):
def wrapper(*args, **kwargs):
print("--- Логика ДО запуска (например, проверка связи) ---")
result = func(*args, **kwargs) # Запуск вашей функции
print("--- Логика ПОСЛЕ запуска ---")
return result
return wrapper

@retry
def get_data(month):
print(f"Выгружаем данные за {month}...")

get_data("Январь")


Что здесь происходит на самом деле?
Многие думают, что @ — это какая-то магия. На самом деле, когда вы пишете @retry над функцией, Python делает за вас вот такую подстановку:

get_data = retry(get_data)

Ваша функция get_data буквально залетает в retry как аргумент. А внутри wrapper мы уже можем докрутить что угодно: добавить цикл for для повторных попыток или поставить паузу time.sleep, чтобы подождать, пока данные «доедут» до хранилища.

Давайте так: 💯
Если под этим постом наберем 50 реакций, я выложу в комментарии свою реальную рабочую версию декоратора с этого кейса. Там настроено количество попыток, время ожидания между ними.

Итог: 🤩


❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
А какой самый непонятный момент в декораторах для вас? Попробуем разобрать в комментариях!👇
✔️ Подпишитесь на канал, чтобы не пропустить следующие хаки.


🚬 Провожу обучение и консультации: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤‍🔥30🔥1615🐳721
🔥 Claude Opus 4.6 (бесплатно) — а точнее MiMo-V2-Pro:

Да, вы не ослышались — бесплатный аналог уровня Claude Sonnet и Claude Opus. И я сам в это не верил, пока не попробовал.
Сейчас расскажу, как получить доступ к MiMo-V2-Pro абсолютно бесплатно и без ограничений на 7 дней.

Что такое MiMo-V2-Pro? 🤔

Это языковая модель от Xiaomi, которая по качеству ответов реально тянет на уровень Claude Sonnet и Claude Opus. Я активно тестирую её последние несколько дней и вам скажу честно — уровень вышка.

Сравнивал на своих задачах:
• Генерация SQL-запросов
• Объяснение кода
• Написание Python-скриптов
• Анализ данных
И самое главное — это бесплатно и безлимитно на 7 дней.

Как подключить? Всего 3 шага: ⚡️

1️⃣ Скачайте VS Code (если ещё нет):
https://code.visualstudio.com/
2️⃣ Установите расширение Kilo Code:
Откройте VS Code → Extensions (Ctrl+Shift+X) → найдите "Kilo Code" → Install
3️⃣ Выберите модель MiMo-V2-Pro:
После установки расширения в настройках выберите модель MiMo-V2-Pro — и всё, можно работать.

Почему стоит попробовать? 🔥

• Абсолютный безлимит на 7 дней — никаких ограничений по запросам
• Уровень Claude Sonnet/Opus — проверено на практике
• Работает прямо в VS Code — не нужно переключаться между окнами
• Бесплатно — ни копейки не платите

Я сам сейчас активно тестирую MiMo-V2-Pro для своих задач по аналитике и вам советую попробовать. Успевайте — неизвестно, сколько будет действовать бесплатный период.

Давайте так: 💯
Если под этим постом наберем 60 реакций, я выложу пост про то, как бесплатно использовать Nano Banana Pro — тоже топовая модель, для генерации изображений.

Итог: 🤩

Если вы аналитик, разработчик или просто пишете код — попробуйте MiMo-V2-Pro через Kilo Code. Это реальная альтернатива платным моделям, которая работает не хуже.

❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
Пробовали MiMo-V2-Pro? Какие впечатления? Делитесь в комментариях!👇
✔️ Подпишитесь на канал, чтобы не пропустить следующие хаки.


🚬 Провожу обучение и консультации: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥178🔥3322🐳111
🏦 Разбор задачи с собеседования в Тинькофф (Т-банк).
Считаем «окна» неактивности пользователя в SQL. Часть 1


На интервью в крупные финтех-компании (Тинькофф, Яндекс, Авито) часто дают эту задачу, чтобы проверить, умеете ли вы работать с временными рядами и оконными функциями.

Суть задачи:
Есть таблица логов user_actions с колонками user_id и action_timestamp. Нужно найти все случаи, когда пользователь «пропадал» более чем на 30 минут между двумя действиями.

Как это решается «на пальцах»?
Нам нужно сравнить время текущего действия со временем ПРЕДЫДУЩЕГО. В SQL для этого есть идеальный инструмент — оконная функция LAG. Представьте, что вы стоите в очереди и спрашиваете человека сзади: «А когда зашел тот, кто был перед тобой?».

Простейший пример решения:

WITH time_diffs AS (
SELECT
user_id,
action_timestamp,
-- Достаем время предыдущего действия для этого же юзера
LAG(action_timestamp) OVER(PARTITION BY user_id ORDER BY action_timestamp) as prev_ts
FROM user_actions
)
SELECT
user_id,
prev_ts as gap_start,
action_timestamp as gap_end,
-- Считаем разницу (в разных СУБД синтаксис даты чуть разный)
(action_timestamp - prev_ts) as duration
FROM time_diffs
WHERE (action_timestamp - prev_ts) > interval '30 minutes'


Почему здесь нужны оконные функции?
1️⃣ PARTITION BY user_id: Мы не хотим сравнивать время Васи со временем Пети. Окно «запирает» расчеты внутри конкретного пользователя.
2️⃣ ORDER BY: Чтобы LAG понимал, какое действие было действительно предыдущим, данные должны быть отсортированы по времени.
3️⃣ Чистота: Без оконных функций пришлось бы делать тяжелый JOIN таблицы самой на себя, что на миллионах строк просто «повесит» базу.

Давайте так: 👇
Эта задача — только верхушка айсберга. Если мы наберем под этим постом 50 реакций ❤️, я выложу вторую часть решения: как не просто найти разрывы, а сгруппировать их в полноценные сессии неактивности (задача Gaps and Islands в переводе "Пробелы и Острова").

Итог: 🤩

Оконные функции — это маст-хэв для аналитика. Научитесь пользоваться LAG и LEAD, и 80% задач на временные интервалы будут решаться за 5 минут.

А вам попадались задачи на интервалы на собеседованиях? Что было самым сложным? Пишите в комментариях!
✔️ Подпишитесь на канал, чтобы не пропустить следующие хаки.


🚬 Провожу обучение и консультации: mentor.dima-sqlit.ru


@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥50🔥20🐳5