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

Связь: @devmangx

РКН: https://clck.ru/3H4Wo3
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Откопал полезную платформу для подготовки к собесам «DataLemur»

Коллекция практических задач по SQL, статистике, машинному обучению и Python, предназначенных для подготовки к собеседованиям в крупных компаниях в сфере аналитики данных и data science

Практикуйся прокачивай свои скиллы и уверенно проходи интервью в Google, Amazon и других гигантах 😎

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
День 7 из серии «20 дней изучения основ SQL для начинающих».

Сырые данные часто содержат слишком много информации, чтобы сразу увидеть закономерности.

Оператор GROUP BY помогает объединить тысячи строк в понятные сводные результаты и получить ценные инсайты.

Научитесь агрегировать данные с помощью:
COUNT() — подсчёт количества записей
SUM() — вычисление суммы
AVG() — расчёт среднего значения
• Группировка по нескольким полям (GROUP BY по нескольким столбцам)

Освоив GROUP BY, вы сможете строить отчёты, анализировать данные и получать сводную информацию всего несколькими SQL-запросами.

Сохраните эту шпаргалку — GROUP BY является одним из самых важных навыков, которые нужно освоить при изучении SQL.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Потрясающий инструмент для работы с базами данных SQL «RunSQL»

Онлайн-песочница без установки, где можно создавать таблицы и запросы, обмениваться результатами с командой и работать с MySQL, PostgreSQL и SQL Server

Платформа поддерживает визуальное проектирование схем данных, загрузку CSV-файлов и совместное редактирование в реальном времени

И главное он абсолютно бесплатен 👍

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
День 8 из серии «20 дней изучения основ SQL для начинающих».

Многие начинающие разработчики путают операторы WHERE и HAVING.

На самом деле разница довольно проста:

WHERE фильтрует отдельные строки до выполнения группировки (GROUP BY).
HAVING фильтрует уже сформированные группы после применения агрегатных функций.

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

Сохраните эту шпаргалку — она обязательно пригодится вам в изучении SQL.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4
This media is not supported in your browser
VIEW IN TELEGRAM
Отличная находка бесплатная и удобная IDE для работы с SQL базами

Работает с основными СУБД: SQLite, Postgres, MySQL. Поддерживает вкладки, автодополнение, подсветку синтаксиса, историю запросов и множество других полезных функций.

Если часто шаришься по базам эта штука экономит нервы и время ⌨️

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1
SQL Tip: использование ORDER BY с несколькими столбцами

При использовании ORDER BY с несколькими столбцами база данных сначала сортирует весь результат по первому указанному столбцу (в данном примере — sales).

В результате формируются группы строк с одинаковым значением этого столбца. Например, Mira и Bob попадают в одну группу, потому что у обоих значение sales равно 12 000.

После этого применяется сортировка по второму столбцу, которая используется как критерий для разрешения совпадений.

В данном случае строки сортируются по столбцу age в порядке возрастания (ASC), поэтому Mira (30 лет) будет расположена перед Bob, который старше. Такой принцип применяется ко всем строкам, у которых совпадает значение первого столбца сортировки.

Что если совпадают значения и во втором столбце? Если одинаковыми оказываются значения и второго столбца, ситуация зависит от конкретной СУБД. В небольших наборах данных некоторые базы данных могут сохранить порядок вставки записей.

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

Вывод: если вам важен полностью предсказуемый порядок результатов, добавляйте в ORDER BY дополнительный столбец с уникальными значениями (например, id). Это гарантирует стабильную сортировку.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Media is too big
VIEW IN TELEGRAM
Полезная находка для работы с SQL

Тулза «Actually Explain» автоматически визуализирует PostgreSQL-запросы в виде интерактивных схем, помогая разобраться в JOIN'ах, подзапросах и связях между таблицами.

Забираем за лайк 📖

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2
Совет по SQL: Если вы только начинаете изучать SQL, не используйте SELECT * без необходимости.

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

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

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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Руководство по SQL

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

Материал дополнен практическими примерами, которые способствуют лучшему усвоению информации.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
5
Бесплатные курсы по «Data Science» от Kaggle Learn

Бесплатные курсы по анализу данных, машинному обучению, Python, SQL и другим инструментам data science. Построены по принципу: «минимум теории, максимум кода»

Все задания выполняются в Jupyter ноутбуках прямо в браузере и есть система автоматической проверки 👍

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52
SQL-совет, который должен знать каждый новичок
Используйте возможности оператора WHERE.

Вместо того чтобы загружать все данные о продажах компании, сразу отфильтруйте только нужные записи:
SELECT * FROM sales
WHERE region = 'Abuja'
AND year = 2026;

Такой подход:
• ускоряет выполнение запроса;
• уменьшает объём передаваемых данных;
• снижает нагрузку на базу данных;
• особенно полезен при работе с большими таблицами.

Привычка сразу использовать WHERE там, где это возможно, сделает ваши SQL-запросы более эффективными и профессиональными.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😁41
Наглядное объяснение операций соединения в SQL.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2
Ловите исчерпывающее руководство по подготовке к SQL собеседованию

Если впереди SQL-собес и руки уже холодеют от волнения — не парься! В этом гайде собраны топовые вопросы, разборы и лайфхаки, которые помогут уверенно писать запросы и понимать, что от тебя хотят рекрутеры

Всё по полочкам и максимально доступно 📚

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Некоторые SQL-грабли, на которые до сих пор наступают даже сеньоры (мне тоже иногда приходится лезть в доки и перепроверять):

1. = NULL никогда не бывает true. Используй IS NULL / IS NOT NULL (трехзначная логика: true, false, unknown).

2. NOT IN (...) + один NULL в списке может вернуть ноль строк. Чаще безопаснее NOT EXISTS.

3. LEFT JOIN + фильтр в WHERE превращается в INNER JOIN. Фильтры по джойну клади в ON.

4. COUNT(col) пропускает NULL, а COUNT(*) нет. Из-за этого метрики потом “магически” не сходятся.

5. NULL ломает конкатенацию и сравнения. Используй COALESCE осознанно.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112
This media is not supported in your browser
VIEW IN TELEGRAM
НОВОЕ: Durable Functions в PostgreSQL

pg_durable это расширение для PostgreSQL. Состояние рабочего процесса (workflow), очередь, повторные попытки и восстановление хранятся в Postgres, а для обеспечения надёжности, высокой доступности (HA), резервного копирования и восстановления используются встроенные возможности Postgres.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4
SQL-совет, который должен знать каждый новичок

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

SELECT FirstName, Salary, Department
FROM Employees
WHERE Department = 'Sales';


Почему это лучше?

• Запросы выполняются быстрее — извлекаются только нужные данные.
• Снижается нагрузка на базу данных и сеть.
• Код становится понятнее и проще в поддержке.
• Изменения в структуре таблицы с меньшей вероятностью повлияют на работу приложения.

Использование SELECT * допустимо при быстром исследовании данных или в учебных примерах, но в production-коде считается плохой практикой.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3👀1
300+ практических задач: подарок тем, кто изучает SQL

Если хотите научиться писать SQL не только по теории, но и на практике, попробуйте SQL Climber.

Платформа предлагает более 300 интерактивных заданий разного уровня сложности от простых SELECT-запросов до более сложных тем с JOIN, агрегатными функциями и подзапросами.

Каждое задание проверяется автоматически, поэтому можно сразу увидеть результат и исправить ошибки. Отличный ресурс для новичков, подготовки к собеседованиям и регулярной практики SQL.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4🤔1
Не используйте ELSE 0 вместе с COUNT и CASE

Использование ELSE 0 - очень частая ошибка у новичков, когда они комбинируют функцию COUNT с выражением CASE. Обычно это происходит из-за непонимания того, как именно COUNT работает при применении к столбцу.

Когда используется COUNT(column), функция считает все значения, которые не равны NULL, включая нули. Это значит, что если в выражении CASE указан ELSE 0, каждая строка, не попавшая под условие, превращается в значение 0. В результате такие строки тоже попадают в подсчёт.

Вот наивный пример:

sql id="g4suvd"
SELECT
Department,
COUNT(CASE
WHEN Status = 'Active' THEN EmployeeID
ELSE 0
END) AS ActiveEmployees
FROM Employees
GROUP BY Department;


В этом запросе каждая строка, которая не удовлетворяет условию, превращается в 0, а это валидное значение, поэтому оно тоже учитывается в COUNT. Из-за этого результат может получиться вводящим в заблуждение.

Лучше всего вообще убрать ELSE. Когда ветка ELSE опущена, выражение CASE возвращает NULL для строк, которые не соответствуют условию. А так как COUNT() игнорирует NULL, будут посчитаны только строки, которые действительно удовлетворяют условию. Вот правильный вариант:

sql id="vxa5np"
SELECT
Department,
COUNT(CASE
WHEN Status = 'Active' THEN EmployeeID
END) AS ActiveEmployees
FROM Employees
GROUP BY Department;


В этой версии строки, не подходящие под условие, возвращают NULL, и COUNT() естественным образом исключает их из подсчёта. В итоге запрос получается чище, а подсчёт корректно отражает только те значения, которые реально соответствуют условию.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Золотое правило SQL: Всегда используйте WHERE перед GROUP BY.

Неправильно:
SELECT Department, COUNT(*)
FROM Employees
GROUP BY Department
WHERE Salary > 50000;


В SQL такой запрос вообще не выполнится, потому что оператор WHERE должен идти до GROUP BY.

Правильно:
SELECT Department, COUNT(*)
FROM Employees
WHERE Salary > 50000
GROUP BY Department;


Почему это важно? WHERE сначала отбирает только нужные строки. Затем GROUP BY группирует уже отфильтрованные данные.

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

Запомните порядок выполнения:
FROMWHEREGROUP BYHAVINGSELECTORDER BY

Это одно из базовых правил SQL, которое поможет избежать ошибок и писать более эффективные запросы.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Интерактивное разъяснение про B-деревья

Это не просто статья, а интерактивное руководство: можно шаг за шагом смотреть, как устроено B+Tree, как происходит поиск, вставка и почему структура остаётся сбалансированной. Очень наглядно показывает, как индексы реально работают внутри БД

Один из лучших способов наконец-то сложить картинку в голове 👍

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔2