Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Классическая игра в аркадном стиле для любителей ретро-игр. Защитите космический корабль с Печенькой (и не только) на борту, проходя уровни.

Космический арканоид

Арканоид, Аркады, Веселая

Играть

Топ прошлой недели

  • cristall75 cristall75 6 постов
  • 1506DyDyKa 1506DyDyKa 2 поста
  • Animalrescueed Animalrescueed 35 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
4
VelStyling
VelStyling
Серия SQL: знакомство

UPDATE TABLE не равно ALTER TABLE⁠⁠

9 часов назад

или почему один запрос меняет данные, а другой — саму таблицу

Сегодня поговорим об изменениях.

В своем посте вот тут я уже писала об UPDATE

А пока подписывайся на мой канал На связи: SQL Там я публикую посты про особенности и нюансы SQL. Этот канал про то, как не бояться баз данных, понимать, что такое JOIN, GROUP BY и почему NULL ≠ 0. Его я веду с нуля подписчиков.
Разбор частых ошибок и задачи по накопительной сумме уже в канале.
Присоединяйся!

Если коротко то:
UPDATE - это команда для изменения значений в строках.
Таблица остаётся той же самой, структура не меняется - меняются только данные.

Базовый синтаксис:

UPDATE table_name

SET column = value

WHERE condition;

  • SET — что именно меняем

  • WHERE — какие строки

UPDATE:

  • может блокировать строки

  • работает внутри транзакции

  • откатывается через ROLLBACK

Что же такое ALTER TABLE?

ALTER - это команда для изменения структуры таблицы:

  • добавить столбец

  • удалить столбец

  • изменить тип данных

  • переименовать столбец

По-простому:

ALTER — это «переделать бланк», а не вписать новые данные.

Базовый синтаксис:

ALTER TABLE table_name

ACTION;

Где ACTION — это то, что ты делаешь со структурой.

Самые частые варианты ALTER

➕ Добавить столбец

ALTER TABLE users

ADD COLUMN age INT;

✏️ Переименовать столбец

ALTER TABLE users

RENAME COLUMN name TO full_name;

🔄 Изменить тип данных

ALTER TABLE users

ALTER COLUMN age TYPE BIGINT;

❌ Удалить столбец

ALTER TABLE users

DROP COLUMN age;

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

Раньше ты не хранила возраст пользователей.
Потом бизнес сказал: «Нужно».

➡️ Это ALTER, потому что:

  • раньше столбца не было

  • данные тут ни при чём

Главное различие - в одной таблице:

Показать полностью 2
[моё] Аналитика Python Программирование Аналитик Системный аналитик Анализ данных База данных SQL Postgresql Большие данные Microsoft Excel IT Фриланс Самообразование Длиннопост
0
3
VelStyling
VelStyling
Серия SQL: знакомство

Скользящее окно⁠⁠

1 день назад

В прошлый раз рассказывала про накопительную сумму.
Ссылка на пост вот тут.

Сегодня поговорим про скользящее окно.

А пока подписывайся на мой канал На связи: SQL Там я публикую посты про особенности и нюансы SQL. Этот канал про то, как не бояться баз данных, понимать, что такое JOIN, GROUP BY и почему NULL ≠ 0. Его я веду с нуля подписчиков.
Разбор частых ошибок и задачи по накопительной сумме уже в канале.
Присоединяйся!

Скользящее окно

Running total ≠ Rolling window

Running total — накопительная сумма.
Это сумма всего, что было до текущего момента включительно.
Она никогда не уменьшается, если нет отрицательных значений.

Где используется

  • общий доход с начала месяца / года

  • накопленные регистрации

  • рост базы пользователей

  • прогресс выполнения плана

📌 Это метрика «накопления», а не «динамики»

Rolling window — скользящее окно

Rolling window считает сумму (или среднее) только за последние N дней / строк.

Старые данные выпадают из окна.

Какой вопрос она отвечает

Что происходит прямо сейчас, в последние N дней?

Пример запроса с использованием Rolling window в SQL

SELECT

date,

sales,

SUM(sales) OVER (

ORDER BY date

ROWS BETWEEN 6 PRECEDING AND CURRENT ROW

) AS rolling_7_days

FROM sales;

Самое важное для разбора - это строка
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW

В этой строке и появляется Rolling window

Разберём буквально:

ROWS
👉 окно считается по количеству строк, а не по датам

6 PRECEDING
👉 взять 6 строк до текущей

CURRENT ROW
👉 включить текущую строку

В итоге окно = 7 строк

6 предыдущих + текущая = 7 строк

Важно понимать:
📌 Не 7 дней.
📌 Не календарная неделя.
📌 А именно 7 строк в отсортированном наборе.
Сортировка идет по ORDER BY date

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

Running total, если:

  • считаешь прогресс

  • строишь cumulative-графики

  • важно «сколько всего»

Rolling window, если:

  • ищешь тренд

  • сглаживаешь шум

  • сравниваешь периоды

Ну а в моем канале На связи SQL тебя будут ждать задачи на скользящее окно. Кейсы с использованием ROWS и RANGE. Как сделать реальные 7 дней, а не 7 строк. Использование rolling-метрик в BI инструментах.
Подписывайся!

Показать полностью 1
[моё] Аналитика Python Программирование Аналитик Системный аналитик Анализ данных База данных SQL Postgresql Большие данные Microsoft Excel IT Фриланс Самообразование Длиннопост
0
4
VelStyling
VelStyling
Серия SQL: знакомство

Накопительная сумма⁠⁠

2 дня назад

Есть цифры, которые сами по себе не информативны.
А есть цифры, которые показывают путь.

Накопительная сумма - это как раз про путь.

Обсудим сегодня эту тему.

А пока подписывайся на мой канал На связи: SQL Там я публикую посты про особенности и нюансы SQL. Этот канал про то, как не бояться баз данных, понимать, что такое JOIN, GROUP BY и почему NULL ≠ 0. Его я веду с нуля подписчиков. Присоединяйся!

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

Если очень по-человечески:

Сегодня + вчера + позавчера + всё, что было раньше.

В SQL это часто называют:

  • running total

  • cumulative sum

Простой пример из жизни

Ты копишь деньги.

Сам по себе столбец «Отложила» — это просто факты.
А вот накопительная сумма отвечает на другой вопрос:

Сколько денег у меня есть к каждому дню?

Именно этот столбец обычно хотят видеть бизнес и пользователи.

Где применяется накопительная сумма

На практике — почти везде:

  • 💰 финансы:
    доход, расходы, прибыль с начала месяца / года

  • 📦 склад:
    остатки товаров

  • 📊 аналитика продуктов:
    рост пользователей, регистраций, подписок

  • 📈 KPI и планы:
    выполнение плана «на текущий момент»

  • 🕰 временные ряды:
    динамика показателей во времени

Очень часто без накопительной суммы график просто не имеет смысла.


Как считается накопительная сумма в SQL

Современный и правильный способ — оконные функции.

Пример:

SELECT

date,

amount,

SUM(amount) OVER (ORDER BY date) AS running_total

FROM sales;

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

  • SUM(amount) — считаем сумму

  • OVER (...) — говорим: не по всей таблице сразу

  • ORDER BY date — накапливаем по времени

Результат:

  • первая строка → просто значение

  • каждая следующая → сумма всех предыдущих + текущая

Если нужно накапливать отдельно (по группам)

Например, по каждому клиенту:

SUM(amount) OVER (

PARTITION BY customer_id

ORDER BY date

)

Теперь у каждого клиента своя накопительная сумма, и они не мешают друг другу.

Примеры задач и важные моменты с NULL публикую в своем канале На связи: SQL.
Подписывайся и изучай новую информацию

Показать полностью 3
[моё] SQL Аналитик Аналитика Microsoft Excel Самообразование Длиннопост
0
5
VelStyling
VelStyling
Серия SQL: знакомство

UNION vs UNION ALL⁠⁠

8 дней назад

Почему одно объединение "умное", но медленное, другое - "тупое", но честное?

Обсудим сегодня эту тему.

UNION vs UNION ALL

А пока подписывайся на мой канал На связи: SQL Там я публикую посты про особенности и нюансы SQL. Этот канал про то, как не бояться баз данных, понимать, что такое JOIN, GROUP BY и почему NULL ≠ 0. Его я веду с нуля подписчиков. Присоединяйся!

UNION и UNION ALL.

На вид - почти одно и то же.
По смыслу - разные вещи.

И вот почему

UNION ALL — «тащит всё как есть»

UNION ALL просто берёт результаты двух запросов и клеит их друг под другом:

SELECT name FROM customers

UNION ALL

SELECT name FROM partners;

Никаких проверок, дубликатов, умностей.

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

UNION ALL = быстро + честно + без фильтров.

UNION - «умный, но медленный»

UNION делает то же самое, но перед тем как вернуть результат, он удаляет дубликаты:

SELECT name FROM customers

UNION

SELECT name FROM partners;

Чтобы убрать дубли, PostgreSQL/Oracle/MySQL вынуждены:

  • отсортировать результат

  • или построить hash-сет

  • и только потом вернуть данные

Это дорого.
На миллионах строк может стать тормозом №1 в отчёте.

UNION = красиво, чисто, но медленно.

Где использовать UNION?

✔ Когда действительно нужны уникальные значения

Например, получить список всех пользователей, независимо от источника:

SELECT user_id FROM old_system

UNION

SELECT user_id FROM new_system;

✔ Когда нужно исключить дубли после сложной логики

Например, когда запросы пересекаются, а ты не хочешь вручную писать DISTINCT.

Где использовать UNION ALL?

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

SELECT * FROM sales_2024

UNION ALL

SELECT * FROM sales_2025;

Неочевидный факт: порядок строк не гарантируется

Ни в UNION, ни в UNION ALL.

Если хочешь порядок — дописывай: ORDER BY

Вывод:

  • UNION ALL — как корзина: «скидываем всё подряд».

  • UNION — как фильтр: «скидываем всё, но потом отбираем уникальное».

Мой канал На связи: SQL ждет тебя, если ты тоже хочешь познакомиться с базовым языком для аналитики данных. Подписывайся!

Показать полностью 1
[моё] Аналитик Аналитика SQL Анализ данных Microsoft Excel База данных Таблица Postgresql IT Длиннопост
1
6
VelStyling
VelStyling
Серия Выгорела от работы аналитиком, но...

Поиск работы в конце 2025⁠⁠

9 дней назад

Сейчас декабрь, все закрывают квартал/год, делают бюджет на следующий год, но а я в поиске работы. Нет, начала поиск я не в декабре, а в октябре. Из результатов за 2 месяца - один оффер, но я отказалась от него. Не из-за содержания работы, а из-за процесса оформления - он вызвал сомнения.

И пока я продолжала поиск, я начала анализировать, что вообще происходит вокруг. Почему раньше всё работало одним способом, а теперь - совсем иначе.

Сейчас из каждого утюга слышу, что работу найти сложно, что на поиск работы надо закладывать 6 месяцев и т.д. и т.п. Ну ОК, подумала я, и вот в октябре начала искать, отрыла резюме на hh.ru для всех желающих, стала повторять теорию, нарешивать задачки и т.д.

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

Смотрю я статистику своего резюме: последний раз искала работу через HH в 2021 году, просмотров резюме по 10 в день. А сейчас дай бог 3 в неделю.

Резюме у меня одно, я его обновляю и дополняю по мере изменения моего опыта.

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

Причиной всего этого - автоматизация процессов. Первый скрининг резюме проводит не HR, а AI-агент, настроенный под конкретные триггерные слова.

Раньше мы писали резюме для людей.
Теперь - сначала для алгоритмов

Эпоха универсальных резюме закончилась.
Не потому, что специалисты стали хуже.
А потому что требования стали более структурированными, а инструменты поиска - более автоматизированными.

И теперь у меня вместо одного резюме - 4 резюме, с нотками особенностей под конкретные направления.

Опыт один и тот же.
Но фокус - разный.
И именно фокус видят алгоритмы.

И вот в этой статистике, которую вещает HH.ru - ссылка на презентацию здесь
Говорится о динамики среднего числа вакансий и резюме

Сопоставление вакансий идет к количеству резюме - не к количеству кандидатов.

Если даже возьмем меня, то у меня 4 резюме (планируется еще одно), т.е. количество резюме (в моем случае надо разделить на 4). А если это применить ко всем резюме, то может быть и картина то изменится. И не будем мы использовать слово рынок работодателя - а может быть другой рынок. Например рынок AI-ассистентов

Со стороны соискателей, тоже идет автоматизация. Соискатели в ручную откликаются на 100 вакансий из идеи - а что-то да и сработает. Либо также настраивают автоотклик, автообновление. Все это приводит к тому, что на одну вакансию HR-ы получают 400-3000 откликов, что руками нереально разобрать.

Поэтому компании:
- ставят автоскоринг
- ранжируют по ключевым словам
- убирают резюме, которые хоть чуть-чуть не совпадают
- сортируют по «свежести обновления»

И это не плохо и не хорошо — это новая норма.
Но к ней нужно адаптироваться.

Искать работу в конце 2025 года — это уже не про то, чтобы быть «идеальным кандидатом».
Это про то, чтобы быть заметным в мире, где первые фильтры проходят не люди, а алгоритмы.

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

Этот канал я веду с нуля.

Показать полностью 1
[моё] Эмоциональное выгорание Опыт IT Поиск работы HH Аналитика Аналитик SQL Анализ данных Microsoft Excel База данных Длиннопост
15
3
viperinthebath
viperinthebath

Продолжение поста «Нужен совет по LibreOffice Base (SQL в том числе)»⁠⁠1

14 дней назад

Итак, решение найдено с помощью очень хорошего и талантливого человека, который тоже есть на Пикабу, но свело нас не Пикабу, а творчество. Огромное спасибо ей и за решение, и за творчество! Как и обещал ранее, публикую решение тут, вдруг кому пригодится. Запрос написан очень красиво и понятно, легко разобраться. ИМХО по таким примерам очень удобно изучать SQL. Да и @Avenir.Sirgun хотел взглянуть)))
Итак, вот запрос, который решает:

SELECT

YEAR(R.ДатаРасход) AS Год,

MONTH(R.ДатаРасход) AS Месяц,

A.Адрес,

M.НазваниеМатериал,

SUM(R.КолвоМатериала) AS Количество

FROM Расходы AS R

JOIN Работы AS W ON R.IDРабот = W.IDРабот

JOIN Адреса AS A ON W.IDАдреса = A.IDАдрес

JOIN Материалы AS M ON R.IDМатериала = M.IDМатериал

GROUP BY

YEAR(R.ДатаРасход),

MONTH(R.ДатаРасход),

A.Адрес,

M.НазваниеМатериал

ORDER BY

Год,

Месяц,

A.Адрес,

M.НазваниеМатериал;

Структура БД есть в изначальном посте.
Далее уже можно модифицировать, если надо.
Задача решена! Ура! Ещё раз огромное спасибо, В..., ты очень мне помогла! (не тегаю, т.к. не получал на то дозволения)

Показать полностью
[моё] Libreoffice База данных SQL Программирование Base IT Решение проблемы Ответ на пост Текст
0
3
viperinthebath
viperinthebath

Нужен совет по LibreOffice Base (SQL в том числе)⁠⁠1

18 дней назад

Друзья, задумал немного помочь себе и упростить работу. В свободное время решил соорудить базу данных выполненных работ по участку и потраченных на это материалов. Когда-то успешно делал себе "помогалки" в MS Access (в 90ых ещё), поэтому выбрал LibreOffice Base. Структура вот такая:

Таблицы БД со связями

Таблицы БД со связями

Форму для заполнения сделал. Заполняется, хранит данные. Отчёт по всем тратам отдельно создать - не проблема, получилось. Это без условий и без формул, просто списком.
Но никак не могу осилить отчёт, в котором бы выдавалась сумма по каждому адресу - сколько потрачено каждого вида материала. Типа,
Май:
Адрес1:
материал1 - 1
материал2 -3
Адрес2:
материал1 - 2
материал3 -4


Гуглил-яндексил, пытался по наитию, ничего не получается. Наверное, если просижу пару недель, изучая всё к ряду, то осилю... но подсказка бы ускорила.
Конечно, без рейтинга. Не знал, в какое сообщество отправить, но, надеюсь, не ошибся, ибо запрос-то на SQL писать придётся))) - долго ждать модерации, публикую без сообщества.
Заранее благодарен!
(Есть и второй вопрос - никак не могу придумать, как сделать типовые работы - чтобы кнопочку нажал, и автоматически заполнились поля формы, создались записи в таблице с расходами материалов)

Показать полностью 1
Libreoffice База данных SQL Без рейтинга
25
3
VelStyling
VelStyling
Серия SQL: знакомство

Условные выражения в запросах⁠⁠

1 месяц назад

CASE WHEN - часто используемое условное выражение в запросах. Его особенности и факты далее.

Условные выражения в запросах

А пока подписывайся на мой канал На связи: SQL Там я публикую посты про особенности и нюансы SQL. Этот канал про то, как не бояться баз данных, понимать, что такое JOIN, GROUP BY и почему NULL ≠ 0. Его я веду с нуля подписчиков. Присоединяйся!

CASE - возвращает значение, но не управляет логикой выполнения запроса.

SELECT

name,

CASE

WHEN salary > 100000 THEN 'богач'

WHEN salary BETWEEN 50000 AND 100000 THEN 'норм'

ELSE 'бедняк'

END AS category

FROM employees;

Здесь CASE не «делает выборку», а вычисляет новое значение для каждой строки.

Где используется CASE

✅ В SELECT - чтобы выводить вычисленные поля
✅ В WHERE - чтобы сделать фильтрацию условной
✅ В ORDER BY - чтобы сортировать по кастомной логике
✅ В GROUP BY и HAVING - для агрегатов с условиями

Пример в ORDER BY:

ORDER BY

CASE WHEN status = 'vip' THEN 1 ELSE 2 END

В итоге VIP-клиенты окажутся первыми — без лишнего UNION или сортировки по тексту.

Где нельзя использовать CASE

  • Нельзя динамически подменять им названия колонок или таблиц — SQL так не работает:

SELECT * FROM CASE WHEN ... THEN table1 ELSE table2 END -- ошибка

  • Нельзя изменять структуру запроса — CASE не может выбирать, какие поля попадут в SELECT.

То есть он работает только на уровне данных, не на уровне схемы запроса.

Неочевидные факты

1. CASE возвращает первое совпадение

SQL идёт сверху вниз — как только условие совпало, остальные даже не проверяются.
Поэтому важно порядок условий.

CASE

WHEN score > 80 THEN 'A'

WHEN score > 90 THEN 'A+' -- никогда не сработает

END

Потому что >80 ловит всё, включая >90.

2. Тип результата — общий для всех веток

CASE пытается привести все результаты к единому типу.
Если ты вернёшь 'текст' и NULL, всё ок.
Но если 'текст' и 123, то SQL может выдать ошибку или привести число к строке.
💡 Всегда делай значения одного типа, особенно если потом используешь CASE в арифметике.

3. Есть две формы: сравнительная и поисковая

Обычно используют поисковую:

CASE WHEN condition THEN result ... END

Но есть ещё сравнительная:

CASE status

WHEN 'new' THEN 1

WHEN 'active' THEN 2

END

Она короче, но менее гибкая — работает только с равенством (=).

4. CASE + агрегаты = мощный аналитический трюк

Чтобы посчитать агрегаты по категориям в одной строке:

SELECT

SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) AS male_count,

SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) AS female_count

FROM users;

Один запрос, два счётчика, без подзапросов и джойнов.

5. CASE в WHERE — не всегда оптимален

Когда ты используешь CASE в WHERE, PostgreSQL часто не может применить индекс,
потому что условие становится непредсказуемым.

Пример:

WHERE

CASE WHEN is_vip THEN discount > 10 ELSE discount > 30 END

Лучше выносить логику в OR:

WHERE (is_vip AND discount > 10)

OR (NOT is_vip AND discount > 30)

Так планировщик сможет использовать индексы (их наличие подразумевается)

Где CASE особенно полезен

  • Когда нужно сделать динамическую сегментацию данных (категории, статусы, группы)

  • При построении витрин и отчётов (разделить аудиторию, выделить группы риска и т.п.)

  • Для чистки данных на лету (заменить NULL на текст или дефолтное значение)

  • В AB-тестах — присвоить группе метку на основании условия

Если тебе нравятся такие разборы SQL с реальными примерами и подводными камнями —
подписывайся на мой Telegram На связи: SQL

Показать полностью 1
[моё] SQL Microsoft Excel Аналитика Аналитик Анализ данных Самообразование Длиннопост
14
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии