День 7 из серии «20 дней изучения основ SQL для начинающих».
Сырые данные часто содержат слишком много информации, чтобы сразу увидеть закономерности.
Оператор
Научитесь агрегировать данные с помощью:
•
•
•
• Группировка по нескольким полям (
Освоив
Сохраните эту шпаргалку —
👉 @SQLPortal
Сырые данные часто содержат слишком много информации, чтобы сразу увидеть закономерности.
Оператор
GROUP BY помогает объединить тысячи строк в понятные сводные результаты и получить ценные инсайты.Научитесь агрегировать данные с помощью:
•
COUNT() — подсчёт количества записей•
SUM() — вычисление суммы•
AVG() — расчёт среднего значения• Группировка по нескольким полям (
GROUP BY по нескольким столбцам)Освоив
GROUP BY, вы сможете строить отчёты, анализировать данные и получать сводную информацию всего несколькими SQL-запросами.Сохраните эту шпаргалку —
GROUP BY является одним из самых важных навыков, которые нужно освоить при изучении SQL.Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Потрясающий инструмент для работы с базами данных SQL «RunSQL»
Онлайн-песочница без установки, где можно создавать таблицы и запросы, обмениваться результатами с командой и работать с MySQL, PostgreSQL и SQL Server
Платформа поддерживает визуальное проектирование схем данных, загрузку CSV-файлов и совместное редактирование в реальном времени
И главное он абсолютно бесплатен👍
👉 @SQLPortal
Онлайн-песочница без установки, где можно создавать таблицы и запросы, обмениваться результатами с командой и работать с MySQL, PostgreSQL и SQL Server
Платформа поддерживает визуальное проектирование схем данных, загрузку CSV-файлов и совместное редактирование в реальном времени
И главное он абсолютно бесплатен
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
День 8 из серии «20 дней изучения основ SQL для начинающих».
Многие начинающие разработчики путают операторы
На самом деле разница довольно проста:
•
•
Поняв эту ключевую концепцию, вы сможете создавать гораздо более мощные и гибкие SQL-запросы для построения отчётов и анализа данных.
Сохраните эту шпаргалку — она обязательно пригодится вам в изучении SQL.
👉 @SQLPortal
Многие начинающие разработчики путают операторы
WHERE и HAVING.На самом деле разница довольно проста:
•
WHERE фильтрует отдельные строки до выполнения группировки (GROUP BY).•
HAVING фильтрует уже сформированные группы после применения агрегатных функций.Поняв эту ключевую концепцию, вы сможете создавать гораздо более мощные и гибкие SQL-запросы для построения отчётов и анализа данных.
Сохраните эту шпаргалку — она обязательно пригодится вам в изучении SQL.
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
Работает с основными СУБД: SQLite, Postgres, MySQL. Поддерживает вкладки, автодополнение, подсветку синтаксиса, историю запросов и множество других полезных функций.
Если часто шаришься по базам эта штука экономит нервы и время
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
SQL Tip: использование ORDER BY с несколькими столбцами
При использовании
В результате формируются группы строк с одинаковым значением этого столбца. Например, Mira и Bob попадают в одну группу, потому что у обоих значение
После этого применяется сортировка по второму столбцу, которая используется как критерий для разрешения совпадений.
В данном случае строки сортируются по столбцу
Что если совпадают значения и во втором столбце? Если одинаковыми оказываются значения и второго столбца, ситуация зависит от конкретной СУБД. В небольших наборах данных некоторые базы данных могут сохранить порядок вставки записей.
Однако в большинстве случаев, особенно при работе с большими и сложными наборами данных, порядок строк с полностью одинаковыми значениями сортируемых столбцов не гарантируется и может быть произвольным.
Вывод: если вам важен полностью предсказуемый порядок результатов, добавляйте в
👉 @SQLPortal
При использовании
ORDER BY с несколькими столбцами база данных сначала сортирует весь результат по первому указанному столбцу (в данном примере — sales).В результате формируются группы строк с одинаковым значением этого столбца. Например, Mira и Bob попадают в одну группу, потому что у обоих значение
sales равно 12 000.После этого применяется сортировка по второму столбцу, которая используется как критерий для разрешения совпадений.
В данном случае строки сортируются по столбцу
age в порядке возрастания (ASC), поэтому Mira (30 лет) будет расположена перед Bob, который старше. Такой принцип применяется ко всем строкам, у которых совпадает значение первого столбца сортировки.Что если совпадают значения и во втором столбце? Если одинаковыми оказываются значения и второго столбца, ситуация зависит от конкретной СУБД. В небольших наборах данных некоторые базы данных могут сохранить порядок вставки записей.
Однако в большинстве случаев, особенно при работе с большими и сложными наборами данных, порядок строк с полностью одинаковыми значениями сортируемых столбцов не гарантируется и может быть произвольным.
Вывод: если вам важен полностью предсказуемый порядок результатов, добавляйте в
ORDER BY дополнительный столбец с уникальными значениями (например, id). Это гарантирует стабильную сортировку.Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Media is too big
VIEW IN TELEGRAM
Полезная находка для работы с SQL
Тулза «Actually Explain» автоматически визуализирует PostgreSQL-запросы в виде интерактивных схем, помогая разобраться в JOIN'ах, подзапросах и связях между таблицами.
Забираем за лайк📖
👉 @SQLPortal
Тулза «Actually Explain» автоматически визуализирует PostgreSQL-запросы в виде интерактивных схем, помогая разобраться в JOIN'ах, подзапросах и связях между таблицами.
Забираем за лайк
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍2
Совет по SQL: Если вы только начинаете изучать SQL, не используйте
Лучше всегда явно указывайте только те столбцы, которые действительно нужны. Это даст сразу несколько преимуществ:
• Запросы будут выполняться быстрее.
• Будет передаваться меньше лишних данных.
• Код станет понятнее и его будет проще поддерживать.
• Вы лучше поймёте структуру таблицы и то, с какими данными работаете.
Небольшая привычка, которая со временем приносит большую пользу.
👉 @SQLPortal
SELECT * без необходимости.Лучше всегда явно указывайте только те столбцы, которые действительно нужны. Это даст сразу несколько преимуществ:
• Запросы будут выполняться быстрее.
• Будет передаваться меньше лишних данных.
• Код станет понятнее и его будет проще поддерживать.
• Вы лучше поймёте структуру таблицы и то, с какими данными работаете.
Небольшая привычка, которая со временем приносит большую пользу.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Руководство по SQL
Это руководство охватывает различные аспекты, начиная с основ SQL и до более сложных тем.
Материал дополнен практическими примерами, которые способствуют лучшему усвоению информации.
👉 @SQLPortal
Это руководство охватывает различные аспекты, начиная с основ SQL и до более сложных тем.
Материал дополнен практическими примерами, которые способствуют лучшему усвоению информации.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Бесплатные курсы по «Data Science» от Kaggle Learn
Бесплатные курсы по анализу данных, машинному обучению, Python, SQL и другим инструментам data science. Построены по принципу: «минимум теории, максимум кода»
Все задания выполняются в Jupyter ноутбуках прямо в браузере и есть система автоматической проверки👍
👉 @SQLPortal
Бесплатные курсы по анализу данных, машинному обучению, Python, SQL и другим инструментам data science. Построены по принципу: «минимум теории, максимум кода»
Все задания выполняются в Jupyter ноутбуках прямо в браузере и есть система автоматической проверки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤2
SQL-совет, который должен знать каждый новичок
Используйте возможности оператора
Вместо того чтобы загружать все данные о продажах компании, сразу отфильтруйте только нужные записи:
Такой подход:
• ускоряет выполнение запроса;
• уменьшает объём передаваемых данных;
• снижает нагрузку на базу данных;
• особенно полезен при работе с большими таблицами.
Привычка сразу использовать
👉 @SQLPortal
Используйте возможности оператора
WHERE.Вместо того чтобы загружать все данные о продажах компании, сразу отфильтруйте только нужные записи:
SELECT * FROM sales
WHERE region = 'Abuja'
AND year = 2026;
Такой подход:
• ускоряет выполнение запроса;
• уменьшает объём передаваемых данных;
• снижает нагрузку на базу данных;
• особенно полезен при работе с большими таблицами.
Привычка сразу использовать
WHERE там, где это возможно, сделает ваши SQL-запросы более эффективными и профессиональными.Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😁4❤1
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
Если впереди SQL-собес и руки уже холодеют от волнения — не парься! В этом гайде собраны топовые вопросы, разборы и лайфхаки, которые помогут уверенно писать запросы и понимать, что от тебя хотят рекрутеры
Всё по полочкам и максимально доступно
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Некоторые SQL-грабли, на которые до сих пор наступают даже сеньоры (мне тоже иногда приходится лезть в доки и перепроверять):
1.
2.
3.
4.
5.
👉 @SQLPortal
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 осознанно.Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2
This media is not supported in your browser
VIEW IN TELEGRAM
НОВОЕ: Durable Functions в PostgreSQL
pg_durable это расширение для PostgreSQL. Состояние рабочего процесса (workflow), очередь, повторные попытки и восстановление хранятся в Postgres, а для обеспечения надёжности, высокой доступности (HA), резервного копирования и восстановления используются встроенные возможности Postgres.
👉 @SQLPortal
pg_durable это расширение для PostgreSQL. Состояние рабочего процесса (workflow), очередь, повторные попытки и восстановление хранятся в Postgres, а для обеспечения надёжности, высокой доступности (HA), резервного копирования и восстановления используются встроенные возможности Postgres.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
SQL-совет, который должен знать каждый новичок
Не используйте
Вместо этого явно указывайте только те столбцы, которые действительно нужны:
Почему это лучше?
• Запросы выполняются быстрее — извлекаются только нужные данные.
• Снижается нагрузка на базу данных и сеть.
• Код становится понятнее и проще в поддержке.
• Изменения в структуре таблицы с меньшей вероятностью повлияют на работу приложения.
Использование
👉 @SQLPortal
Не используйте
SELECT * в реальных проектах.Вместо этого явно указывайте только те столбцы, которые действительно нужны:
SELECT FirstName, Salary, Department
FROM Employees
WHERE Department = 'Sales';
Почему это лучше?
• Запросы выполняются быстрее — извлекаются только нужные данные.
• Снижается нагрузка на базу данных и сеть.
• Код становится понятнее и проще в поддержке.
• Изменения в структуре таблицы с меньшей вероятностью повлияют на работу приложения.
Использование
SELECT * допустимо при быстром исследовании данных или в учебных примерах, но в production-коде считается плохой практикой.Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👀1
300+ практических задач: подарок тем, кто изучает SQL
Если хотите научиться писать SQL не только по теории, но и на практике, попробуйте SQL Climber.
Платформа предлагает более 300 интерактивных заданий разного уровня сложности от простых
Каждое задание проверяется автоматически, поэтому можно сразу увидеть результат и исправить ошибки. Отличный ресурс для новичков, подготовки к собеседованиям и регулярной практики SQL.
👉 @SQLPortal
Если хотите научиться писать SQL не только по теории, но и на практике, попробуйте SQL Climber.
Платформа предлагает более 300 интерактивных заданий разного уровня сложности от простых
SELECT-запросов до более сложных тем с JOIN, агрегатными функциями и подзапросами.Каждое задание проверяется автоматически, поэтому можно сразу увидеть результат и исправить ошибки. Отличный ресурс для новичков, подготовки к собеседованиям и регулярной практики SQL.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🤔1
Не используйте
Использование
Когда используется
Вот наивный пример:
В этом запросе каждая строка, которая не удовлетворяет условию, превращается в
Лучше всего вообще убрать
В этой версии строки, не подходящие под условие, возвращают
👉 @SQLPortal
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() естественным образом исключает их из подсчёта. В итоге запрос получается чище, а подсчёт корректно отражает только те значения, которые реально соответствуют условию.Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Золотое правило SQL: Всегда используйте
Неправильно:
В SQL такой запрос вообще не выполнится, потому что оператор
Правильно:
Почему это важно?
В результате запрос выполняется корректно и зачастую эффективнее, поскольку группировать приходится меньше строк.
Запомните порядок выполнения:
Это одно из базовых правил SQL, которое поможет избежать ошибок и писать более эффективные запросы.
👉 @SQLPortal
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 группирует уже отфильтрованные данные.В результате запрос выполняется корректно и зачастую эффективнее, поскольку группировать приходится меньше строк.
Запомните порядок выполнения:
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BYЭто одно из базовых правил SQL, которое поможет избежать ошибок и писать более эффективные запросы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Интерактивное разъяснение про B-деревья
Это не просто статья, а интерактивное руководство: можно шаг за шагом смотреть, как устроено B+Tree, как происходит поиск, вставка и почему структура остаётся сбалансированной. Очень наглядно показывает, как индексы реально работают внутри БД
Один из лучших способов наконец-то сложить картинку в голове👍
👉 @SQLPortal
Это не просто статья, а интерактивное руководство: можно шаг за шагом смотреть, как устроено B+Tree, как происходит поиск, вставка и почему структура остаётся сбалансированной. Очень наглядно показывает, как индексы реально работают внутри БД
Один из лучших способов наконец-то сложить картинку в голове
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔2
Postgres CONCAT_WS удобно собирает строку даже если есть NULL:
Если middle_initial = 'T', то результат будет:
Если middle_initial = NULL, то получится:
Пробел вставляется только между существующими значениями, так что итоговая строка выглядит нормально без лишних пробелов.
👉 @SQLPortal
SELECT CONCAT_WS(' ', first_name, middle_initial, last_name);Если middle_initial = 'T', то результат будет:
John T Smith
Если middle_initial = NULL, то получится:
John Smith
Пробел вставляется только между существующими значениями, так что итоговая строка выглядит нормально без лишних пробелов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1