Пока все говорят про Cursor AI и его платную подписку, Alibaba тихо запустили свой аналог — Qoder с полноценным spec-режимом.
🧠 Что такое vibe coding? Это революционный подход к программированию с ИИ. Вот основные фишки IDE в которую встроен ИИ:
• Анализ всего проекта: ИИ изучает каждый файл, понимает архитектуру и связи между компонентами
• Контекстное программирование: по твоему запросу создаёт код, который идеально вписывается в существующий проект
• Чат с проектом: можешь просто задавать вопросы типа "Как работает эта функция?" или "Где хранятся настройки?" — ИИ объяснит всё!
• Изучение чужого кода: загрузил проект и можешь его изучать, задавая вопросы. Просто ВАУ!
📋 Что такое spec-mode (спек-режим)? Spec = Specification (техническое задание). Суть:
• Пишешь ТЗ обычным языком: "Сделай бота для Telegram, который показывает погоду"
• ИИ создаёт полный проект: структуру папок, все файлы, код, конфигурации
• Получаешь готовое приложение: которое можно сразу запускать
• Называется "спек-режим": потому что работает по принципу технического задания
Итог:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥16🐳8❤🔥6✍1
Давайте посмотрим на таблицу:
таблица orders:
id amount
1 100
2 NULL
3 200
Выполним вот такой запрос:
SELECT
SUM(amount), -- 100 + 200 = 300 (NULL пропущен)
COUNT(amount), -- 2 (NULL не считается)
AVG(amount) -- (100+200)/2 = 150 (делим только на не-NULL)
FROM orders
Результат всегда рассчитывается только по НЕ-null значениям!
Имейте это ввиду.
Что делать? Нужно использовать функцию coalesce:
Выполним вот такой запрос:
SELECT
SUM(COALESCE(amount, 0)), -- 100 + 0 + 200 = 300
COUNT(COALESCE(amount, 0)), -- 3 (учтёт все строки, NULL стал 0)
AVG(COALESCE(amount, 0)) -- (100 + 0 + 200) / 3 = 100
FROM orders
Отлично мы не занизили метрику.
COUNT(*) — считает все строки, независимо от значения поля. Т.е. учитывает и NULL, и не-NULL.
Выполним вот такой запрос:
SELECT
COUNT(*), -- 3 (все строки)
COUNT(amount), -- 2 (только не-NULL)
COUNT(COALESCE(amount, 0)) -- 3 (NULL стал 0)
FROM orders
Итог:
• COUNT(*) — нужен, когда важно узнать общее число строк (например, всю активность, включая пропуски).
• COUNT(поле) — только по реально заполненным значениям (NULL не попадает).
• COALESCE(поле, 0) — необходим, если логика отчёта требует трактовать NULL как 0 (например, “нет продаж” = 0), иначе метрики — сумма, среднее — будут ошибочными.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дима SQL-ит 🧑💻 (Аналитика данных)
Проголосуйте за канал, чтобы он получил больше возможностей.
🔥36🐳13❤🔥12
⚡️ Как работают конструкции ANY и ALL в SQL — объяснение на простых примерах:
Будем работать вот с такой таблицей:
Предположим, что нам нужно найти сотрудников у которых зарплата:
1) больше чем хотя бы у одного из программистов
2) больше чем у всех программистов
1️⃣ Конструкция ANY:
Находим всех, у кого зарплата больше, чем хотя бы у одного программиста:
• В подзапросе будут зарплаты программистов: 30_000, 20_000.
• ANY — это условие вида: salary > 20_000 ИЛИ salary > 30_000.
• По сути, это то же самое, что salary > MIN(зарплат_программистов).
2️⃣ Конструкция ALL:
Теперь ищем тех, у кого зарплата больше, чем у всех программистов:
• Здесь ALL работает как "И": salary > 20_000 И salary > 30_000 одновременно.
• Это равнозначно salary > MAX(зарплат_программистов).
Итог:
🍸 Если вы нашли пост для себя полезным, то накидывайте реакций, чтобы я понимал, что вам эта тема интересна!
❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
❓ А вы в каких задачах использовали ANY и ALL или предпочитаете min/max? Пишите в комментариях!
@dima_sqlit
Будем работать вот с такой таблицей:
Таблица: employees
id name role_name salary
1 Ваня Программист 30_000
2 Таня Аналитик 40_000
3 Петя Программист 20_000
4 Саша Менеджер 50_000
Предположим, что нам нужно найти сотрудников у которых зарплата:
1) больше чем хотя бы у одного из программистов
2) больше чем у всех программистов
Находим всех, у кого зарплата больше, чем хотя бы у одного программиста:
SELECT *
FROM employees
WHERE salary > ANY (
SELECT salary FROM employees WHERE role_name = 'Программист'
);
• В подзапросе будут зарплаты программистов: 30_000, 20_000.
• ANY — это условие вида: salary > 20_000 ИЛИ salary > 30_000.
• По сути, это то же самое, что salary > MIN(зарплат_программистов).
Теперь ищем тех, у кого зарплата больше, чем у всех программистов:
SELECT *
FROM employees
WHERE salary > ALL (
SELECT salary FROM employees WHERE role_name = 'Программист'
);
• Здесь ALL работает как "И": salary > 20_000 И salary > 30_000 одновременно.
• Это равнозначно salary > MAX(зарплат_программистов).
Итог:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дима SQL-ит 🧑💻 (Аналитика данных)
Проголосуйте за канал, чтобы он получил больше возможностей.
🔥25❤🔥12🦄4
🤩 Бесплатные нейросети для аналитики и кода: Qwen, DeepSeek и Google Notebook AI — без ограничений:
Если вы хотите упростить себе работу с SQL, Python или анализом данных с помощью LLM (больших языковых моделей), но не готовы платить за подписки — это пост для вас. Сегодня расскажу про три полностью бесплатных инструмента, которые можно использовать без ограничений.
1️⃣ Qwen:
Китайская модель, которая не уступает многим западным аналогам и полностью бесплатна.
Что умеет:
• Общаться и давать советы по любым темам.
• Анализировать загруженные файлы.
• Писать код на Python, SQL, Java и других языках.
🔜 Начать пользоваться можно по ссылке
2️⃣ Deepseek:
Ещё один топовый китайский проект, который также абсолютно бесплатен и обладает схожим набором функций, как у Qwen
🔜 Начать пользоваться можно по ссылке
3️⃣ Google Notebook AI:
Notebook AI работает не просто как чат, а как исследовательский ассистент. Вы создаете «блокнот» и указываете ему источники (текст, PDF, видео с YouTube), а нейросеть будет отвечать на ваши вопросы, основываясь только на предоставленной вами информации.
🔜 Начать пользоваться можно по ссылке
🔜 Более подробное описние этой нейронки можно посмотреть у меня в посте по ссылке
Итог:
🙂 Теперь у вас есть три мощных и абсолютно бесплатных ИИ-инструмента в арсенале. Qwen и DeepSeek — ваши универсальные инструменты для кода, анализа файлов и идей, а Google Notebook AI — уникальный сервис для глубокой работы с вашими собственными документами и источниками без «выдумок».
🍸 Если этот обзор сэкономил вам время и силы (и возможно, деньги на подписке), то накидывайте реакций 🔥! Так я пойму, что тема ИИ-инструментов вам интересна.
❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
❓ А вы уже пользовались этими нейросетями? Какая впечатлила больше всего? Или может знаете другие бесплатные аналоги? Жду ваши мнения в комментариях!
@dima_sqlit
Если вы хотите упростить себе работу с SQL, Python или анализом данных с помощью LLM (больших языковых моделей), но не готовы платить за подписки — это пост для вас. Сегодня расскажу про три полностью бесплатных инструмента, которые можно использовать без ограничений.
Китайская модель, которая не уступает многим западным аналогам и полностью бесплатна.
Что умеет:
• Общаться и давать советы по любым темам.
• Анализировать загруженные файлы.
• Писать код на Python, SQL, Java и других языках.
Ещё один топовый китайский проект, который также абсолютно бесплатен и обладает схожим набором функций, как у Qwen
Notebook AI работает не просто как чат, а как исследовательский ассистент. Вы создаете «блокнот» и указываете ему источники (текст, PDF, видео с YouTube), а нейросеть будет отвечать на ваши вопросы, основываясь только на предоставленной вами информации.
Итог:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25🐳5❤🔥3
Если вы, как и я, проводите кучу времени за компьютером, то знаете: сидячий образ жизни — это сплошной вред для всего организма. Я решил запустить серию постов, где поделюсь, как минимизирую это влияние. В каждой части разберу свои привычки: от спорта и перерывов до образа жизни в целом.
Но помните, это не медсовет!
Мой топ 5 добавок:
Итог:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дима SQL-ит 🧑💻 (Аналитика данных)
Проголосуйте за канал, чтобы он получил больше возможностей.
🔥24👌5🤩3
Когда данных слишком много — например, тысячи ID для выгрузки из базы или API — обрабатывать всё сразу рискованно: можно словить таймаут, ошибку или просто "зависание". Здесь на помощь приходит батчинг — разбиение на маленькие порции.
import pandas as pd
from utils import sql_query #Представим, что это функция, которая берет на вход sql запрос и возвращает результат в Pandas DataFrame
user_id_df = pd.read_excel('user_id.xlsx') #Загружаем файл с user_id в Pandas DataFrame
user_id_tuple = tuple(user_id_df['user_id']) #Преобразуем в формат кортежа, чтобы можно было подставить удобно в sql запрос через f строку Python
sql_query("""select
user_id,
count(*)
from events
where
user_id in {user_id_tuple} #подставляем через f строку наши user_id
and event_date between '2025-08-01' and '2025-08-31' #рассматриваем август
and event_name = 'purchase' #смотрим события покупки
group by
1
""")
Все отлично, но такой запрос, скорее всего, упадет с ошибкой, так как список с user_id нам дали большой и событий соответственно тоже много и СУБД выдаст ошибку, чтобы защититься от "падения". Что делать в таком случае? Ответ - а давайте ограничим выборку, а как мы ее можем ограничить? Давайте будем смотреть не сразу всех user_id из списка, а по частям.
def split_into_n_parts(lst, n=10):
k = len(lst) // n #Целочисленное деление (Например, 23//10 = 2)
m = len(lst) % n #Остаток от деления (Например, 23//10 = 3)
parts = [] #Результат
start = 0
for i in range(n):
size = k + (1 if i < m else 0)
end = start + size
parts.append(lst[start:end])
start = end
return parts
Вот наша функция: она берёт список lst и делит его на ровно n частей (по умолчанию 10). Остаток распределяется по первым частям для равномерности.
user_id_list = list(user_id_df['user_id']) #Преобразуем в формат списка, чтобы можно было подставить в нашу функцию для батчинга
iters = split_into_n_parts(user_id_list, 10) #Получили список у которого в качестве элементов другие списки, например [[1,2,3] , [4,5,6]] и т.д.
df_list = [] #Сюда будем запихивать промежуточные результаты, чтобы в конце их объединить
for batch_user_id_list in iters:
df_add = sql_query("""select
user_id,
count(*)
from events
where
user_id in {tuple(batch_user_id_list)} #подставляем через f строку наши user_id
and event_date between '2025-08-01' and '2025-08-31' #рассматриваем август
and event_name = 'purchase' #смотрим события покупки
group by
1)
df_list.append(df_add)
# Объединяем все DataFrame в один
df_buy = pd.concat(df_list, ignore_index=True)
Вуаля, мы смогли выгрузить все нужные нам данные.
Итог:
• Батчинг — супер-инструмент для работы с большими данными в Python. С этой функцией и циклом вы легко обработаете любые объёмы без сбоев!
• Вопрос, который может возникнуть — а что если нужно по всем user_id информацию выгрузить за тот же август, то уже не выйдет так сделать ? Ответ — выйдет, но для этого, как правило используют хэш функцию (Об этом в одном из следующих постов).
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18🐳6❤🔥5
Вы когда-нибудь замечали, что в новой теме, будь то Математика, Языки программирования и т.п. всё кажется хаосом, пока не разберётесь с базовыми понятиями? Есть крутая теория, которая говорит: если сначала выучить ключевые термины в предметной области, то освоение пойдёт в разы быстрее. Это не просто слова — это подкреплено когнитивными подходами, такими как Cognitive Learning Theory и Fast Mapping.
• Eng – A>>>M: Acid, API, Airflow, A/B-tests, BI, BigQuery, ClickHouse, Confluence, DWH, Docker, Excel, ETL, Figma, Git, Hadoop и многое другое.
• Eng – N>>>Z: NoSQL, OLAP/OLTP, Pandas, Plotly, PostgreSQL, Redash, SQL, Spark, Tableau, UML, VBA, XML, Yandex Metrika.
• Рус – А>>>М: Анализ, Агрегация, Визуализация, Гипотезы, Дашборды, Инсайт, Кластеризация, Линейная регрессия, Модели.
• Рус – Н>>>Я: Нормализация, Оптимизация, Панели, Ритейл, Статистика, Телеком, Управление данными, Хранилище, Яндекс Директ.
• Плюс разделы по метрикам – (финансовые, маркетинговые, продуктовые), базам данных, моделям.
Итог:
Ссылка на курс - Аналитик данных: подготовка к собеседованию
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Stepik: online education
Аналитик данных: подготовка к собеседованию
Курс для аналитика данных, построенный на терминах из реальных, свежих вакансий. Применение Python: проведён исследовательский анализ данных, построена гистограмма, выделены главные термины из таких областей, как аналитика + маркетинг, визуализация, финансы…
❤🔥29🔥14🦄9
Коррелированные подзапросы — это подзапросы, которые зависят от основного запроса. Они ссылаются на данные из внешней части и выполняются для каждой строки основного запроса. Звучит сложно? На самом деле, это как если подзапрос "спрашивает" у основной таблицы: "Эй, для этой строки дай мне нужное значение!". Давайте разберём на простом примере.
Таблица: employees
id | name | department | salary
1 Ваня IT 50000
2 Таня IT 60000
3 Петя Sales 40000
4 Саша Sales 55000
5 Маша HR 45000
6 Коля IT 70000
SELECT
id,
name,
department,
salary
FROM
employees as e
WHERE
salary > (SELECT AVG(salary) FROM employees WHERE department = e.department);
• Для каждой строки e подзапрос берёт её department (например, IT для Вани) и считает среднюю зарплату только по этому отделу ((50000 + 60000 + 70000)/3 = 60000). Если salary строки > этой средней — она попадет в результат.
Итог:
Коррелированные подзапросы — для случаев, когда нужно "персонализированное" вычисление по строке, как сравнение со средней в группе. Выбирайте их, когда join усложняет запрос и данных в таблице не много.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дима SQL-ит 🧑💻 (Аналитика данных)
Проголосуйте за канал, чтобы он получил больше возможностей.
🔥19❤🔥6🐳4🗿1
Многие путают CTE (Common Table Expressions) и представления (VIEW), потому что оба позволяют создавать "временные таблички" из запросов. Но под капотом они работают по-разному: CTE — для одного запроса, а представления — как сохранённые ярлыки. Давайте разберёмся на простых примерах.
Представим что у нас в базе данных есть таблица sales (продажи в магазине:
id | user_id | product | amount | date
1 | 101 | Кофе | 500 | 2025-01-15
2 | 102 | Чай | 300 | 2025-01-16
3 | 101 | Печенье | 200 | 2025-01-17
4 | 103 | Кофе | 500 | 2025-01-18
Представление — это просто сохранённый SQL-запрос, который выглядит и работает как обычная таблица. Оно не хранит данные физически — каждый раз при обращении запрос выполняется заново, показывая свежие данные. Есть два типа: постоянные (живут пока не удалишь) и временные (исчезают с закрытием сеанса).
Сеанс — это период времени от подключения к базе данных до отключения от неё. Представьте: вы открываете DBeaver или другой SQL-клиент, подключаетесь к серверу — начинается сеанс. Вы выполняете запросы, создаёте временные объекты. Закрываете программу, отваливается соединение или истекает таймаут — сеанс заканчивается.
Пример постоянного представления:
-- Создаём постоянное VIEW
CREATE VIEW user_summary AS
SELECT user_id, COUNT(*) as order_count, SUM(amount) as total_spent
FROM sales GROUP BY user_id;
-- Используем как таблицу
SELECT * FROM user_summary WHERE total_spent > 400; -- ✅ Работает даже через неделю
Пример временного представления:
-- Создаём временное VIEW
CREATE TEMP VIEW temp_summary AS
SELECT user_id, COUNT(*) as order_count, SUM(amount) as total_spent
FROM sales GROUP BY user_id;
-- Работает в текущем сеансе
SELECT * FROM temp_summary; -- ✅
-- Новый сеанс (закрыли/открыли клиент) — исчезло
SELECT * FROM temp_summary; -- ❌ Ошибка!
CTE — это обобщённое табличное выражение, временный результат запроса, который существует только в рамках одного SQL-запроса. Оно определяется с помощью WITH и исчезает сразу после выполнения. CTE удобно для разбиения сложных запросов на части, улучшая читаемость.
Простой пример CTE:
-- CTE для расчёта сумм по пользователям
WITH user_totals AS (
SELECT user_id, SUM(amount) as total_spent
FROM sales GROUP BY user_id
)
SELECT * FROM user_totals WHERE total_spent > 500; -- ✅ Работает в этом запросе
-- В следующем запросе CTE уже нет
SELECT * FROM user_totals; -- ❌ Ошибка!
• Область видимости: CTE — только в одном запросе, представления — в сеансе (временные) или постоянно.
• Создание: CTE с WITH внутри запроса, представления с CREATE VIEW или CREATE TEMP VIEW.
Итог:
CTE и VIEW — это похожие инструменты, только с разным "сроком хранения". CTE — для быстрых фишек внутри одного запроса, типа "собрал данные на лету и сразу использовал". А представления — как готовые шаблоны, которые можно дёргать когда угодно, чтобы не писать одно и то же по сто раз.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дима SQL-ит 🧑💻 (Аналитика данных)
Проголосуйте за канал, чтобы он получил больше возможностей.
❤🔥26🔥14 8
А вы знали, что не все аналитики в IT ежедневно пишут SQL-запросы — для некоторых это редкий гость? 🤩
Я слышал краем уха о системных аналитиках, но толком не вникал, пока не наткнулся на канал Системный анализ на максималках от Сергея, старшего системного аналитика в UmbrellaIT, который делится своим путем и карьерным развитием простым и увлекательным языком
Сергей рассказывает о своей работе так живо и доступно, что я проникся — наконец-то разобрался, чем они занимаются: берут идеи и пожелания от бизнеса, переводят их в понятные инструкции для программистов, создают схемы, как всё должно работать. Его посты как личный блог: от технарьских разборов до историй из жизни, обзоров книг и советов по росту. Вот несколько примеров, которые меня зацепили и помогли разобраться в теме:
🔜 Нужно ли СА знать программирование? + Краткий анализ рынка
🔜 Шаблоны документации – пустая трата времени или действительно полезно?
🔜 Промт для генерации User Story и Use Case
🔜 Фронт раньше бэка – это вообще законно?
🔜 Что такое Polling и причем тут Шрек
А еще Сергей рассказывает о своих намерениях дорасти до архитектора и делится планом по достижению цели:
🔜 Путь до архитектора (части 1-3)
Частая проблема в IT это выгорание и про это Сергей тоже написал, советую ознакомиться очень полезно:
🔜 Почему я впервые отдохнул только в 26 лет
🔜 Лучшее лекарство от стресса – спорт
Рекомендую подписаться🏖 и ознакомиться, может быть СА это именно ваше направление?
А вы сталкивались с системными аналитиками в работе? Делитесь в комментариях, используете ли их подходы в своей аналитике!
Я слышал краем уха о системных аналитиках, но толком не вникал, пока не наткнулся на канал Системный анализ на максималках от Сергея, старшего системного аналитика в UmbrellaIT, который делится своим путем и карьерным развитием простым и увлекательным языком
Сергей рассказывает о своей работе так живо и доступно, что я проникся — наконец-то разобрался, чем они занимаются: берут идеи и пожелания от бизнеса, переводят их в понятные инструкции для программистов, создают схемы, как всё должно работать. Его посты как личный блог: от технарьских разборов до историй из жизни, обзоров книг и советов по росту. Вот несколько примеров, которые меня зацепили и помогли разобраться в теме:
А еще Сергей рассказывает о своих намерениях дорасти до архитектора и делится планом по достижению цели:
Частая проблема в IT это выгорание и про это Сергей тоже написал, советую ознакомиться очень полезно:
Рекомендую подписаться
А вы сталкивались с системными аналитиками в работе? Делитесь в комментариях, используете ли их подходы в своей аналитике!
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Системный анализ на максималках
Ведущий системный аналитик 🅰️ | IT Ментор
Пишу про IT: личный опыт, хард-скиллы, карьерные байки и полезные находки
Менторство/другие вопросы: @bening_cloth, подробнее https://sergey-saprykin-sa.yonote.ru/share/ssa
Пишу про IT: личный опыт, хард-скиллы, карьерные байки и полезные находки
Менторство/другие вопросы: @bening_cloth, подробнее https://sergey-saprykin-sa.yonote.ru/share/ssa
🔥5 4🐳3
🔥 GitHub Copilot Pro за 400 рублей: доступ к GPT-5 mini с unlimited запросами для IT, аналитики, разработки и повседневной жизни:
Если вы работаете в IT — будь то программирование, аналитика данных, системное администрирование или другие направления — GitHub Copilot Pro может стать вашим суперпомощником. Сегодня разберём, как купить подписку дёшево, что она даёт и почему это выгодно для повседневных задач. Я расскажу на простых примерах, чтобы было понятно даже тем, кто только начинает.
1️⃣ Цены на подписку:
400 рублей за месяц или 830 за три месяца (купить можно на plati market):
• 1 месяц за 400 рублей — отлично для теста, чтобы понять, как инструмент вписывается в ваш workflow
• 3 месяца за 830 рублей — выгоднее в долгосрочной перспективе, около 277 рублей в месяц
2️⃣ Что позволяет подписка:
• Доступ к GPT-5 mini с unlimited запросами — генерируйте код, SQL-запросы, аналитику и т.д. сколько угодно, без ограничений.
• Copilot Pro интегрирует мощный ИИ в вашу среду разработки (VS Code)
• Всего 300 премиум-запросов в месяц на топовые модели (claude, gemini, gpt), но для рутинных задач mini-версии более чем достаточно.
• Одна из ключевых фич — автодополнение кода в реальном времени: пока вы печатаете, ИИ предлагает готовые строки или блоки кода, которые идеально вписываются в ваш стиль.
• Ещё круче — понимание контекста проекта: ИИ анализирует все файлы, структуру кода и зависимости, чтобы давать персонализированные предложения. Не просто общий ответ, а такой, который учитывает вашу библиотеку (например, Pandas для аналитики) или настройки (типа Airflow для задач).
Важно сказать, что для работы требуется VPN
3️⃣ Если вам интересна тема ИИ, можете посмотреть предыдущие посты на эту ему:
• Бесплатные нейросети для аналитики и кода
• Вайбкодинг — бесплатный аналог Cursor AI от Alibaba (Qoder)
• Бесплатная нейросеть от Google для работы с любыми материалами — NotebookLM
• Как за 400 рублей в год получить доступ к Claude, ChatGPT, Gemini и Grok через Perplexity и без использования VPN
Итог:
GitHub Copilot Pro — универсальный инструмент для IT-специалистов (и не только), ускоряющий задачи в программировании, аналитике и за её пределами.
🍸 Если вы нашли пост для себя полезным, то накидывайте реакций, чтобы я понимал, что вам эта тема интересна!
❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
❓ Пробовали GitHub Copilot Pro как чат или для кодинга? Делитесь в комментариях, помогает ли автодополнение в ваших задачах или предпочитаете другие ИИ?
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.
@dima_sqlit
Если вы работаете в IT — будь то программирование, аналитика данных, системное администрирование или другие направления — GitHub Copilot Pro может стать вашим суперпомощником. Сегодня разберём, как купить подписку дёшево, что она даёт и почему это выгодно для повседневных задач. Я расскажу на простых примерах, чтобы было понятно даже тем, кто только начинает.
400 рублей за месяц или 830 за три месяца (купить можно на plati market):
• 1 месяц за 400 рублей — отлично для теста, чтобы понять, как инструмент вписывается в ваш workflow
• 3 месяца за 830 рублей — выгоднее в долгосрочной перспективе, около 277 рублей в месяц
• Доступ к GPT-5 mini с unlimited запросами — генерируйте код, SQL-запросы, аналитику и т.д. сколько угодно, без ограничений.
• Copilot Pro интегрирует мощный ИИ в вашу среду разработки (VS Code)
• Всего 300 премиум-запросов в месяц на топовые модели (claude, gemini, gpt), но для рутинных задач mini-версии более чем достаточно.
• Одна из ключевых фич — автодополнение кода в реальном времени: пока вы печатаете, ИИ предлагает готовые строки или блоки кода, которые идеально вписываются в ваш стиль.
• Ещё круче — понимание контекста проекта: ИИ анализирует все файлы, структуру кода и зависимости, чтобы давать персонализированные предложения. Не просто общий ответ, а такой, который учитывает вашу библиотеку (например, Pandas для аналитики) или настройки (типа Airflow для задач).
Важно сказать, что для работы требуется VPN
• Бесплатные нейросети для аналитики и кода
• Вайбкодинг — бесплатный аналог Cursor AI от Alibaba (Qoder)
• Бесплатная нейросеть от Google для работы с любыми материалами — NotebookLM
• Как за 400 рублей в год получить доступ к Claude, ChatGPT, Gemini и Grok через Perplexity и без использования VPN
Итог:
GitHub Copilot Pro — универсальный инструмент для IT-специалистов (и не только), ускоряющий задачи в программировании, аналитике и за её пределами.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12 6 6
Продолжаем разбираться с временными конструкциями в SQL.
Первую часть можно посмотреть вот здесь
Многие путают временные таблицы (TEMP TABLE) и материализованные представления (MATERIALIZED VIEW), потому что оба хранят данные физически. Но временные таблицы — для сеанса, а материализованные — как кэш с обновлениями. Давайте разберём их работу на таблице sales из первой части.
Представим, что у нас в базе данных есть таблица sales (продажи в магазине):
id | user_id | product | amount | date
1 | 101 | Кофе | 500 | 2025-01-15
2 | 102 | Чай | 300 | 2025-01-16
3 | 101 | Печенье | 200 | 2025-01-17
4 | 103 | Кофе | 500 | 2025-01-18
Временная таблица — это реальная таблица, которая создаётся на время сеанса и хранит данные физически. Она исчезает автоматически при закрытии сеанса (что такое сеанс описано в первой части). Полезна для промежуточных расчётов с большими данными.
Пример временной таблицы:
-- Создаём временную таблицу
CREATE TEMP TABLE temp_sales AS
SELECT * FROM sales WHERE amount > 300;
-- Используем в сеансе
SELECT user_id, SUM(amount) FROM temp_sales GROUP BY user_id; -- ✅ Работает
-- Новый сеанс — исчезла
SELECT * FROM temp_sales; -- ❌ Ошибка!
Материализованное представление — это VIEW, которое хранит данные физически, как таблица, но обновляется по расписанию или вручную. В отличие от обычного VIEW, оно не пересчитывается каждый раз — данные "заморожены" до обновления. Полезно для тяжёлых отчётов.
Пример материализованного VIEW (в PostgreSQL, например):
-- Создаём материализованное VIEW
CREATE MATERIALIZED VIEW mat_user_summary AS
SELECT user_id, COUNT(*) as order_count, SUM(amount) as total_spent
FROM sales GROUP BY user_id;
-- Используем как таблицу
SELECT * FROM mat_user_summary WHERE total_spent > 400; -- ✅ Быстро, данные из кэша
-- Обновляем данные
REFRESH MATERIALIZED VIEW mat_user_summary; -- Пересчитывает
• Хранение: Оба физически, но временные — только в сеансе, материализованные — постоянно, с обновлениями.
• Создание: TEMP TABLE для сеанса, MATERIALIZED VIEW для долгосрочного кэша.
• Обновление: Временные таблицы не обновляются автоматически (данные статичны после создания; для изменений нужно вручную обновлять их содержимое, например, через INSERT/UPDATE). Материализованные — вручную по команде (REFRESH) или через триггеры/расписания в некоторых СУБД.
Итог:
Временные таблицы — для быстрых расчётов в одном сеансе, а материализованные VIEW — для ускорения частых запросов с редкими обновлениями. Не путайте с обычными VIEW!
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дима SQL-ит 🧑💻 (Аналитика данных)
Проголосуйте за канал, чтобы он получил больше возможностей.
❤🔥13 6 4🐳3
Райан Гослинг нашел канал в котором автор делится, как он вкатился в IT после 30 лет в Аналитику данных
В Бегущем по лезвию данных вы найдете:
🔤 Что делать, если к 30 высох мозг?
🔤 Как гарантировано ничего не выучить?
🔤 Еще один список бесплатных курсов, чтобы никогда их не пройти
🔤 Как запустить Jupyter в смартфоне и зачем оно вам надо?
🔤 Где поюзать предка Excel, чтобы почувствать себя олдом?
🔤 Как импортировать датафрейм из буфера обмена?
Подпишись на @data_dg, если тоже хочешь пробежаться по лезвию данных.
В Бегущем по лезвию данных вы найдете:
Подпишись на @data_dg, если тоже хочешь пробежаться по лезвию данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5🔥4 3
Многие новички (и не только) в Python сталкиваются с длинными циклами — например, при обработке больших данных или вычислениях.
Возникает вопрос — завис ли процесс? Можно, конечно, проставлять print с номером итерации, но это примитивно и неудобно.
Есть крутое решение — библиотека tqdm, которая добавляет стильный прогресс-бар.
Представим, что у нас есть список из 100 элементов, и мы хотим мониторить цикл for.
import time # Для имитации задержки
items = range(100) # 100 элементов
for i in items:
print(f"Обработка элемента {i}") # Выводит номер каждый раз
time.sleep(0.1) # Имитация работы
Это базовый вариант — вставляем print внутри цикла, чтобы видеть, на каком шаге мы. Полезно для отладки, но консоль быстро замусоривается, и нет информации о времени или скорости.
import time # Для имитации задержки
from tqdm import tqdm # Импортируем tqdm
items = range(100) # 100 элементов
for item in tqdm(items, desc="Обработка элементов"):
time.sleep(0.1) # Имитация работы (0.1 секунды на итерацию)
print("Цикл завершён!")
Tqdm — это лёгкая библиотека, которая оборачивает ваш цикл в прогресс-бар с процентами, скоростью (итераций в секунду) и временем до завершения.
Устанавливается просто:
pip install tqdm
Обработка элементов: 42%|████▏ | 42/100 [00:04<00:06, 9.50it/s]
Итог:
Если цикл короткий — хватит print. Но для серьёзных задач используйте tqdm.
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дима SQL-ит 🧑💻 (Аналитика данных)
Проголосуйте за канал, чтобы он получил больше возможностей.
🔥17❤🔥7 6
Аналитики часто сталкиваются с задачей — нужно быстро скопировать данные из DataFrame в Excel или наоборот, без лишних сохранений в файлы. Pandas предлагает удобные инструменты для работы с буфером обмена:
1. Вставка из буфера обмена (загрузка данных):
df = pd.read_clipboard() # создаем DataFrame из скопированных данных
Работает с таблицами из Excel, браузера и других источников.
2. Копирование в буфер обмен (выгрузка данных):
df.to_clipboard() # копируем DataFrame в буфер обмена
Теперь данные можно вставить в Excel или другую программу обычным Ctrl+V.
Я работаю в jupyter notebook на удаленном сервере и я встретился с ошибкой:
Pyperclip could not find a copy/paste mechanism for your system.....
И что теперь делать ? Можно конечно установить Pyperclip к себе в систему на удаленном сервере, но для этого, как правило нужны права супер пользователя (sudo), а мы работаем в большой компании и нам никто не даст этого сделать. Я нашел выход (смотрим пункт 3).
3. Копирование в буфер обмен на удаленном сервере (выгрузка данных):
Установим библиотеку copydf
pip install copydf
Импортируем функцию copyDF и в качестве аргумента дадим ей на вход наш Pandas DataFrame:
from copydf import copyDF
copyDF(df)
Готово — теперь данные можно вставить в Excel или другую программу обычным Ctrl+V.
Итог:
Pandas clipboard — удобная штука для локальной работы, но на серверах можно встретиться с проблемами.
copydf решает проблему без прав и лишних заморочек
Попробуйте — и забудьте о файлах!
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дима SQL-ит 🧑💻 (Аналитика данных)
Проголосуйте за канал, чтобы он получил больше возможностей.
🔥21❤🔥7 4 2 1
Работая с ClickHouse, часто сталкиваешься с ситуацией: тебе дали список из десятков тысяч user_id или сотен городов, и нужно отфильтровать данные по ним. Но часто возникают проблемы следующего характера:
• Устанавливаем библиотеку (если ещё не стоит):
pip install clickhouse-connect pandas
• Импортируем нужное:
import clickhouse_connect
import pandas as pd
from clickhouse_connect.driver.external import ExternalData
• Подключаемся к ClickHouse (настройки у всех разные, но вот пример подключения):
def get_click_dl_client():
client = clickhouse_connect.get_client(
host='host',
port=8443,
username='your_login',
password='your_password',
secure=True,
verify=False,
send_receive_timeout=6000000
)
return client
client = get_click_dl_client()
1) users.csv — содержит user_id (int) и флаг actual (String: «да»/«нет»)
2) city.xlsx — список городов в колонке city (String)
Нам нужно отобрать user_id только с actual = 'да' и только из указанных городов.
• Загружаем данные через ExternalData
Создаём объект — он будет "контейнером" для наших временных таблиц:
ext_data = ExternalData()
• Вариант 1: Прямая загрузка из CSV-файла
ext_data.add_file(
file_name='user_table_tmp', # имя таблицы в SQL-запросе
fmt='CSVWithNames', # Формат с именами столбцов в первой строке (если без имён — используйте 'CSV')
structure=['user_id Int32', 'actual String'], # Структура - типы полей
data=open('users.csv', 'rb').read() # путь к файлу (строка!)
)
• Вариант 2: Загрузка из Pandas DataFrame (из Excel):
city_df = pd.read_excel('city.xlsx') # Читаем Excel в DataFrame
ext_data.add_file(
file_name='city_table_tmp', # имя таблицы в SQL-запросе
fmt='CSVWithNames', # С именами столбцов
structure=['city String'], # Структура - типы полей
data=city_df.to_csv(index=False).encode('utf-8') # Конвертируем DF в CSV-строку и в байты для передачи
)Здесь .to_csv() превращает DataFrame в CSV-строку, а .encode('utf-8') — в байты для ExternalData.
• Теперь используем в запросе — без прав на создание таблиц в БД!
q = '''
SELECT
user_id,
SUM(money_spend) AS total_spend
FROM events
WHERE
1=1
AND user_id IN (SELECT user_id FROM user_table_tmp WHERE actual='да')
AND city IN (SELECT city FROM city_table_tmp)
GROUP BY 1
'''
df_total_spend = client.query_df(q, external_data=ext_data) # Выполняем с внешними данными
Итог:
ExternalData — супер-способ обойти отсутствие прав на temp tables в ClickHouse. Загружайте из файлов или DataFrame и джойньте/фильтруйте на здоровье!
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дима SQL-ит 🧑💻 (Аналитика данных)
Проголосуйте за канал, чтобы он получил больше возможностей.
🔥17❤🔥6 4🐳3 1
Обновлённая модель, заточенная под кодинг, создание агентов и сложные вычисления. По бенчмаркам, она лидирует в некоторых задачах, обходя GPT-5 и Gemini 2.5 Pro. По моему личному опыту эта моделька лучше всего отвечает на мои запросы ну и еще Grok, как по мне хорош.
Хочу в ближайшие дни протестировать ее и написать проекты. Интересно ваше мнение, какие модельки вы используете и могут ли они уже помочь написать полноценный проект?
Не хочу перегружать вас бенчмарками и прочими умными словами, просто интересно ваше мнение, хотели бы такие посты, где я бы оповещал вас о новых инструментах, как в ИИ, так и в целом мире IT, что думаете?
попробовать можно здесь
Итог:
Модель выглядит многообещающей для нашей работы с данными — быстрее, умнее в кодинге и с лучшей поддержкой инструментов. Буду разбираться!
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Anthropic
Introducing Claude Sonnet 4.5
Claude Sonnet 4.5 is the best coding model in the world, strongest model for building complex agents, and best model at using computers.
🔥5❤🔥3 2
Аналитики часто сталкиваются с ситуациями, когда SQL-запросы дают неожиданные результаты — таблицы не джойнятся, функции не работают или сравнения ломаются. Всё это из-за несоответствия типов данных полей: строка не склеивается с числом, дата не сравнивается с текстом. Особенно это актуально для JOIN, где типы должны идеально совпадать. Давайте разберём на простых примерах, почему типы данных — это основа стабильных запросов, и как с этим работать.
Представим две таблицы в базе: orders (заказы) и customers (клиенты).
Вот их структура с данными:
Таблица orders:
| id (INT) | customer_id (VARCHAR) | amount (DECIMAL) | order_date (DATE) |
|----------|-----------------------|------------------|-------------------|
| 1 | '101' | 500.00 | 2025-10-01 |
| 2 | '102' | 300.00 | 2025-10-02 |
| 3 | '101' | 200.00 | 2025-10-03 |
Таблица customers:
| id (INT) | name (VARCHAR) | join_date (VARCHAR) |
|----------|----------------|---------------------|
| 101 | Ваня | '2025-09-01' |
| 102 | Таня | '2025-09-15' |
Обратите внимание: customer_id в orders — VARCHAR, а id в customers — INT. Это классическая ловушка!
Если типы не совпадают, SQL может не найти совпадений, даже если значения выглядят одинаково. Например, '101' (строка) не равно 101 (число) без явного приведения:
Плохой пример (JOIN не сработает):
SELECT o.id, c.name, o.amount
FROM orders o
JOIN customers c ON o.customer_id = c.id; -- Нет совпадений! Результат пустой
Почему?
• Поле "o.customer_id" — VARCHAR('101'),
• Поле "c.id" — INT(101).
SQL сравнивает типы строго.
Решение: Приведите типы с CAST.
Хороший пример:
SELECT o.id, c.name, o.amount
FROM orders o
JOIN customers c ON CAST(o.customer_id AS INT) = c.id; -- Теперь джойнится: Ваня с заказами 1 и 3
Функции вроде MAX, SUM, AVG и другие ожидают конкретные типы:
Представим столбец amount как VARCHAR в таблице test_amounts:
| amount (VARCHAR) |
|------------------|
| '10' |
| '2' |
| '100' |
Плохой пример:
SELECT MAX(amount) FROM test_amounts; -- Возвращает '2', потому что лексикографически '2' > '10' > '100' (сравнивает по символам)
Решение: Приведите к числу.
SELECT MAX(CAST(amount AS DECIMAL)) FROM test_amounts; -- Возвращает 100, как ожидается
Итого:
Типы данных — фундамент SQL. Несоответствия приводят к пустым джойнам, ошибкам функций и неверным расчётам. Всегда анализируйте типы заранее, приводите их явно. Это сэкономит часы отладки!
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29 2❤🔥1🐳1
Привет!
Хочу сегодня поделиться каналом Натальи, где она рассказывает свой путь самостоятельного развития от инженера-конструктора на заводе до senior data scientist в крупном банке.
Она может:
➖ рассказать, какие скиллы реально нужны в работе
➖ рассказать, что делать чтобы вашу работу не заменил ИИ
➖ подсказать, как проходить собеседования в ML/DSs,
➖ поделиться опытом работы дата саентистом в бигтех компании
➖ пошутить и повеселиться
Если думаете, куда развиваться в сфере Data Science — очень советую заглянуть к ней в канал
Хочу сегодня поделиться каналом Натальи, где она рассказывает свой путь самостоятельного развития от инженера-конструктора на заводе до senior data scientist в крупном банке.
Она может:
Если думаете, куда развиваться в сфере Data Science — очень советую заглянуть к ней в канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥9 2 2
Сегодня покажу, как за 10-15 минут настроить доступ к Google Sheets через API и загрузить данные прямо в Pandas.
Что сделаем:
Зачем это нужно?
🔥 Это поможет для простой аналитики личных расходов или быстрых бизнес-запросов
✅ Легко стройте базовую аналитику: фильтры, join'ы и графики для бюджета или метрик бизнеса.
Приятного чтения
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥20🔥14🐳4 1 1
Привет! В прошлой части я рассказал про БАДы для борьбы с сидячим образом жизни, а сегодня, пока я нахожусь в родном крае и вдали от московской суеты, решил поделиться, как поддерживаю голову в тонусе. Работа за компом — это не только тело, но и мозг. Я стараюсь держать баланс, чтобы не скатиться в выгорание. Расскажу про свои приёмы — они простые, но реально работают. Но помните, это только мои личные наблюдения и у вас может быть по другому!
Мой топ-3 для менталки:
Итог:
Менталка в IT — это не роскошь, а необходимость, чтобы не выгорать. Для меня смена обстановки, живое общение и книги — как перезагрузка мозга: дают силы, ясность и радость. Попробуйте внедрить хотя бы один хак — начните с прогулки в парк. Но если чувствуете, что нужна помощь, обратитесь к специалисту — психолог, психотерапевт или коуч лучше подскажут персонально.
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥18🔥15 6