SQL Portal | Базы Данных
13.9K subscribers
1.14K photos
142 videos
51 files
810 links
Присоединяйтесь к нашему каналу и погрузитесь в мир баз данных

Связь: @devmangx

РКН: https://clck.ru/3H4Wo3
Download Telegram
Горизонтальные или вертикальные столбцы: что выбрать?

Оба варианта помогают сравнивать категории, но ориентация влияет на читаемость.

• Горизонтальные столбцы удобны, когда категорий много или у них длинные названия.

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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
Бэкап есть? А если найду? 😳

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7
Какие навыки нужны дата-инженеру?

В вакансиях прослеживается закономерность: на первом месте SQL и Python, дальше — облачные платформы, Spark, хранилища данных, оркестрация пайплайнов, потоковая обработка, Git, контейнеры и инструменты для работы с большими данными.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
SQL: порядок написания ≠ порядок обработки

Запрос начинается с SELECT, но логически обрабатывается в другом порядке:

FROM / JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT

Понимание этой последовательности помогает разобраться, почему алиас из SELECT обычно недоступен в WHERE, а фильтрация результатов агрегации выполняется через HAVING.

Важно: это логический порядок, а физический план выполнения выбирает оптимизатор СУБД.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Чтобы запросы оставались быстрыми, понятными и справлялись с ростом объёма данных, нужны хорошие привычки при их написании.

Вот 15 принципов, которые стоит применять на практике:

1. Избегайте SELECT *: выбирайте только нужные столбцы.
2. Отфильтровывайте ненужные строки с помощью WHERE.
3. Понимайте разницу между INNER JOIN и LEFT JOIN.
4. Используйте CTE вместо громоздких подзапросов для улучшения читаемости.
5. Не маскируйте ошибки логики лишним DISTINCT.
6. Используйте UNION ALL, если удалять дубликаты не требуется.
7. Освойте оконные функции для сложных расчётов.
8. Согласовывайте типы данных, чтобы избежать неявных преобразований.
9. Сравнивайте планы для EXISTS и IN: первый не всегда быстрее.
10. Убирайте ORDER BY, если сортировка не нужна.
11. Используйте CROSS JOIN только когда действительно нужно декартово произведение.
12. Учитывайте, что функции над индексированными столбцами могут мешать использованию обычного индекса.
13. Используйте CASE для понятной условной логики.
14. Изучайте план выполнения через EXPLAIN; помните, что EXPLAIN ANALYZE действительно выполняет запрос.
15. Проверяйте корректность на небольших наборах данных, а производительность — на объёмах, близких к реальным.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Pandas: Python для повседневных задач аналитика 🐼

Загрузить файлы с неаккуратными данными, изучить их структуру, очистить столбцы, сгруппировать результаты и объединить наборы данных — всё это можно сделать с Pandas.

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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
Команды SQL проще запомнить по назначению

• DDL — создание и изменение структуры БД: CREATE, ALTER, DROP.
• DML — добавление, изменение и удаление данных: INSERT, UPDATE, DELETE.
• DCL — управление правами доступа: GRANT, REVOKE.
• TCL — управление транзакциями: COMMIT, ROLLBACK, SAVEPOINT.
• DQL — получение данных: SELECT.

В некоторых классификациях SELECT относят к DML, не выделяя DQL отдельно.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
SQL помогает получить данные. Статистика — понять, что они означают

20 статистических понятий для работы с отчётами, метриками и аналитическими запросами.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥1
Быстрый SQL начинается с продуманных запросов

1. Выбирайте только нужные столбцы. Вместо SELECT * перечисляйте поля: это уменьшает объём передаваемых данных.

2. Создавайте подходящие индексы. Учитывайте столбцы, используемые в WHERE, JOIN и ORDER BY.

3. Избегайте функций над индексируемыми столбцами в условиях. Вместо YEAR(date) = 2024 используйте диапазон дат — он может позволить использовать обычный индекс.

4. Используйте EXISTS для проверки существования строк. Но не считайте его всегда быстрее IN: сравнивайте планы выполнения.

5. Ограничивайте выдачу через LIMIT или TOP. Это сокращает результат, но не обязательно объём работы базы данных.

6. Сравнивайте JOIN и подзапросы. Выбирайте вариант с нужной семантикой и лучшим планом: объединение не всегда быстрее и может размножать строки.

7. Отсекайте ненужные строки через WHERE. Чем меньше данных обрабатывается дальше, тем лучше; фактический порядок операций определяет оптимизатор.

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

9. Выбирайте UNION ALL, если удалять дубликаты не нужно. В отличие от UNION, он сохраняет все строки и не тратит ресурсы на устранение повторов.

10. Анализируйте планы выполнения. Используйте EXPLAIN и, где доступно, EXPLAIN ANALYZE, чтобы находить узкие места. Помните: EXPLAIN ANALYZE действительно выполняет запрос.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Числовые функции SQL: от округления до итогов 🔢

Они помогают обрабатывать числа и выполнять вычисления:

• ROUND — округлить до нужного количества знаков.
• CEIL / CEILING и FLOOR — округлить вверх или вниз до целого.
• ABS — получить модуль числа.
• MOD или % — найти остаток от деления.
• POWER — возвести число в степень.

Агрегатные функции обобщают данные: AVG вычисляет среднее, SUM — сумму, MIN и MAX — минимальное и максимальное значения. Названия и синтаксис отдельных функций зависят от СУБД.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Дубликаты в SQL: способ зависит от задачи

• DISTINCT убирает повторяющиеся сочетания выбранных столбцов из результата запроса.
• GROUP BY объединяет строки в группы и позволяет посчитать повторы через COUNT(*).
• ROW_NUMBER() нумерует строки внутри группы, чтобы выбрать, какую запись оставить.

Убрать повторы из выдачи и удалить записи из таблицы — разные задачи. Перед DELETE проверьте выборку удаляемых строк и сделайте резервную копию.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3