TGViewer
Channel Public Channel
SQL Ready | Базы Данных

SQL Ready | Базы Данных

@sql_ready

Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Cотрудничество: @energy_c

РКН: https://clck.ru/3QREBc
Subscribers
17.5K
Photos
1.4K
Videos
113
Links
765

Showing posts older than #1626 · Back to latest

Older Posts 13 shown
Post #1624 3.11K
❤️ Red Blob Games — полезный сайт для визуального понимания алгоритмов!

Если тебе сложно понять алгоритмы по учебникам — этот ресурс решает проблему. Автор объясняет графы, геометрию, деревья, меши из геймдева через понятные визуализации и интерактивы. Сложные идеи здесь раскладываются на простые шаги.

📌 Оставляю ссылочку: redblobgames.com

➡️ SQL Ready | #ресурс
  • 🔥 13
  • ❤ 10
  • 👍 9
Post #1619 2.91K
🖥 PostgreSQL: работа с массивами!

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

➡️ SQL Ready | #шпора
  • 👍 11
  • 🔥 9
  • ❤ 7
Post #1617 2.52K
Генерация фейковых данных для тестов с мгновенной вставкой в любую таблицу!

SQL понимает VALUES как виртуальную таблицу, поэтому можно писать много строк прямо в INSERT:
INSERT INTO users (id, email, name) VALUES
(1, 'alice@mail.com', 'Alice'),
(2, 'bob@mail.com', 'Bob'),
(3, 'carol@mail.com', 'Carol');


Это работает мгновенно, просто читается и не создаёт лишних объектов в базе.

Хотите протестировать в своем проекте? Создайте таблицу и вставьте строки выше:
CREATE TABLE users (
id int PRIMARY KEY,
email text,
name text
);


🔥 Пригодится, когда нужно быстро заполнить таблицу для проверки логики.

➡️ SQL Ready | #совет
  • ❤ 14
  • 🔥 10
  • 👍 8
Post #1615 2.38K
  • 🔥 13
  • 👍 7
  • 🤝 7
Post #1614 3.13K
Оконные функции ROW_NUMBER() в SQL — нумерация строк для аналитики!

ROW_NUMBER() присваивает уникальный порядковый номер строкам внутри логического окна. Данные не объединяются в группы, строки остаются как есть — это ключевое отличие от GROUP BY.

Таблица:
payments(id, user_id, amount, created_at)


Нумеруем платежи каждого пользователя. Окно создаётся по user_id, а нумерация идёт по дате от старых к новым:
SELECT id, user_id, amount,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at ASC) AS rn
FROM payments;


PARTITION BY разбивает данные на сегменты (в данном случае — по пользователю). ORDER BY внутри OVER() задаёт, в каком порядке будут присваиваться номера.

Чтобы найти последний платёж каждого пользователя, меняем порядок сортировки на DESC. Самая свежая запись получит номер 1 в своём окне:
WITH t AS (
SELECT id, user_id, amount,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC) AS rn
FROM payments
)
SELECT * FROM t WHERE rn = 1;


Здесь используем CTE (WITH), чтобы сначала пронумеровать строки, а затем отфильтровать только нужный номер.

Следующий пример — логины пользователей:
auth_logs(id, user_id, ip, login_at)


Ищем первый вход каждого пользователя с каждого IP:
WITH t AS (
SELECT id, user_id, ip,
ROW_NUMBER() OVER (PARTITION BY user_id, ip ORDER BY login_at ASC) AS rn
FROM auth_logs
)
SELECT * FROM t WHERE rn = 1;


🔥 ROW_NUMBER() подходит, когда нужен номер строки в сегменте, важно выбрать первую/последнюю запись по логике сортировки,требуется топ-N по категориям или пользователям.

➡️ SQL Ready | #практика
  • 🔥 16
  • ❤ 8
  • 👍 6
  • 🤝 1
Post #1612 2.62K
☕️ Postgrespro — полная и актуальная документация по PostgreSQL!

SQL-синтаксис, индексы, транзакции, планировщик запросов, репликация, расширения и внутренняя архитектура. Здесь подробно описано не только как писать запросы, но и как база данных работает. Полезно, если используешь Postgres в продакшене или хочешь глубже разобраться в производительности.

📌 Оставляю ссылочку: postgrespro.ru

➡️ SQL Ready | #ресурс
  • ❤ 11
  • 🔥 11
  • 🤝 7
Post #1611 2.55K
  • 👍 11
  • ❤ 9
  • 🔥 9
  • 👎 1
Post #1610 2.8K
  • 👍 14
  • ❤ 9
  • 🔥 8
  • 👎 2
Post #1604 2.95K
☕️ На Хабре вышла подробная статья про автоматизацию развертывания PostgreSQL-кластеров в изолированной инфраструктуре.

В этой статье:
• Показан реальный подход к автоматическому развёртыванию PostgreSQL в закрытом контуре;
• Разбирается поддержка нескольких ОС, версий СУБД и схем отказоустойчивости;
• Описана автоматическая проверка соответствия требованиям архитектуры;
• Приведён практический кейс внедрения, рассчитанный на эксплуатацию в крупных корпоративных системах.

🔊 Продолжайте читать на Habr!


➡️ SQL Ready | #статья
  • 🔥 13
  • 👍 8
  • 🤝 6
  • ❤ 1
Post #1603 2.64K
☕️ StrataScratch — вопросы с собеседований!

Готовишься к собеседованиям по SQL или хочешь укрепить свои практические навыки? Этот сайт собрал самые важные вопросы, которые реально встречаются на интервью. Здесь есть и запросы на выборки, агрегаты и JOIN, и открытые задачи, где нужно не просто написать код, а объяснить логику решения.

📌 Оставляю ссылочку: stratascratch.com

➡️ SQL Ready | #ресурс
  • 👍 12
  • ❤ 10
  • 🔥 8
Post #1602 2.62K
Как понять, что PostgreSQL работает на устаревшей статистике?

PostgreSQL хранит информацию о последнем сборе статистики:
SELECT relname,
last_analyze,
last_autoanalyze,
n_live_tup
FROM pg_stat_user_tables;


last_analyze — когда статистика обновлялась вручную,
last_autoanalyze — когда это делал autovacuum.

Чтобы быстро найти проблемные таблицы, отсортируем по размеру:
SELECT relname,
n_live_tup,
last_analyze,
last_autoanalyze
FROM pg_stat_user_tables
ORDER BY n_live_tup DESC;


Большая таблица + старый last_analyze — оптимизатор работает вслепую.

В таком случае достаточно обновить статистику:
ANALYZE;


Или точечно, для одной таблицы:
ANALYZE orders;


🔥 Это помогает объяснить внезапную деградацию запросов и понять, почему индекс игнорируется.

➡️ SQL Ready | #совет
  • 👍 14
  • 🔥 8
  • ❤ 7
Post #1600 2.52K
📂 Напоминалка по SQL Injection (SQLi)!

Например, простая инъекция вроде OR 1=1 может вернуть все данные из таблицы, а blind SQLi позволяет вытаскивать информацию даже тогда, когда приложение не показывает ошибки и результаты запросов.

На картинке — основные типы SQL-инъекций, которые важно знать при работе с базами данных и backend-логикой.

Сохрани, чтобы не забыть!

➡️ SQL Ready | #ресурс
  • ❤ 16
  • 👍 7
  • 🤝 7
  • 🔥 1
Post #1595 2.7K
🖥 Ищем клиентов без единого заказа — полезный приём для выявления неактивных пользователей и повышения конверсии!

Цель — найти всех зарегистрированных пользователей, которые так и не оформили ни одного заказа. Это поможет вернуться к ним с акциями или напоминаниями.

Основные моменты:
• LEFT JOIN — соединяем таблицы, чтобы сохранить всех клиентов, даже тех, у кого нет заказов.

• WHERE o,id IS NULL — отбираем только тех, для кого заказов не найдено.

• SELECT — выводим имя, email и дату регистрации.


➡ SQL Ready | #задача
  • 🔥 20
  • 🤝 10
  • 👍 8
  • ❤ 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →