Backend
3.95K subscribers
36 photos
710 links
Комьюнити Backend программистов.
Python, Java, Golang, PHP, C#, C/C++, DevOps

Сайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp
Download Telegram
📌 Что такое чистый код?

💬 Спрашивают в 18 % собеседований

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

🤔 Основные характеристики чистого кода

1️⃣ Читаемость:

Код должен быть понятным и легким для чтения другими разработчиками. Имена переменных, функций и классов должны быть осмысленными и описательными.

2️⃣ Простота:

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

3️⃣ Последовательность:

Следование единому стилю кодирования и соглашениям по наименованию. Это упрощает чтение и понимание кода.

4️⃣ Минимум избыточности:

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

5️⃣ Модульность:

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

6️⃣ Тестируемость:

Код должен быть легким для тестирования. Хорошо написанный код обычно легко покрыть юнит-тестами.

🤔 Принципы чистого кода

1️⃣ Именование:

Имена переменных, функций и классов должны быть осмысленными и описывать их назначение.

Пример:
     int age; // Понятно, что переменная хранит возраст


2️⃣ Функции:

Функции должны быть короткими и выполнять одну задачу.

Пример:
     void calculateAndPrintTotal() {
int total = calculateTotal();
printTotal(total);
}


3️⃣ Комментарии:

Комментарии должны объяснять, почему был написан определенный код, а не что он делает. Хорошо написанный код должен быть самодокументируемым.

Пример:
     // Calculate the total price including tax
int totalPrice = calculateTotalPrice();


4️⃣ Форматирование:

Единый стиль форматирования делает код более читабельным. Используйте отступы, пробелы и пустые строки для улучшения структуры кода.

Пример:
     if (isValid) {
process();
} else {
handleError();
}


5️⃣ Обработка ошибок:

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

Пример:
     try {
processFile(file);
} catch (IOException e) {
logError(e);
}


6️⃣ Магические числа и строки:

Избегайте использования магических чисел и строк. Вместо этого используйте константы с осмысленными именами.

Пример:
     static final int MAX_USERS = 100;


🤔 Книги и ресурсы

"Чистый код" (Clean Code) Роберта Мартина (Robert C. Martin)

"Совершенный код" (Code Complete) Стива Макконнелла (Steve McConnell)

🤔 Краткий ответ

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

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
📌 Что такое клиент серверная архитектура?

💬 Спрашивают в 15 % собеседований

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

🤔 Основные компоненты клиент-серверной архитектуры

1️⃣ Клиент:

Описание: Это программа или устройство, которое инициирует запросы к серверу для доступа к ресурсу или услуге.

Функции:

Отправка запросов к серверу.

Получение и отображение данных или выполнения действий на основе ответа от сервера.

2️⃣ Сервер:

Описание: Это программа или устройство, которое обрабатывает запросы от клиентов и предоставляет им необходимые ресурсы или услуги.

Функции:

Обработка запросов от клиентов.

Управление доступом к ресурсам (например, базам данных, файлам, услугам).

Возврат соответствующих данных или результатов выполнения запросов клиентам.

🤔 Принцип работы клиент-серверной архитектуры

1️⃣ Инициация запроса:

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

2️⃣ Обработка запроса:

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

3️⃣ Ответ на запрос:

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

4️⃣ Получение ответа:

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

🤔 Преимущества клиент-серверной архитектуры

1️⃣ Централизованное управление:

Серверы централизуют управление ресурсами и услугами, что облегчает их администрирование и обеспечение безопасности.

2️⃣ Масштабируемость:

Серверы могут обслуживать множество клиентов одновременно, а также могут быть легко масштабированы для обработки большего числа запросов путем добавления дополнительных ресурсов (например, увеличение мощности сервера, добавление новых серверов).

3️⃣ Разделение обязанностей:

Разделение логики между клиентом и сервером позволяет более эффективно использовать ресурсы и упрощает разработку и поддержку приложений.

4️⃣ Безопасность:

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

🤔 Примеры клиент-серверной архитектуры

1️⃣ Веб-приложения:

Клиент: Веб-браузер (например, Chrome, Firefox)

Сервер: Веб-сервер (например, Apache, Nginx), обрабатывающий HTTP-запросы и взаимодействующий с базой данных

2️⃣ Электронная почта:

Клиент: Почтовый клиент (например, Microsoft Outlook, Gmail)

Сервер: Почтовый сервер (например, Microsoft Exchange, Postfix)

3️⃣ Базы данных:

Клиент: Приложение, отправляющее SQL-запросы (например, SQL-клиенты, веб-приложения)

Сервер: Сервер баз данных (например, MySQL, PostgreSQL)

🤔 Краткий ответ

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

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
📌 Что такое XML?

💬 Спрашивают в 15 % собеседований

XML (Extensible Markup Language) — это расширяемый язык разметки, используемый для представления структурированных данных в формате, который легко читается как человеком, так и машиной. XML разработан для хранения и обмена данными между различными системами и платформами.

🤔 Основные характеристики XML

1️⃣ Расширяемость:

XML позволяет создавать собственные теги, что делает его гибким для различных применений и доменов.

2️⃣ Читаемость:

XML-документы легко читаются и понимаются человеком благодаря текстовому формату.

3️⃣ Структурированность:

XML-документы имеют четкую иерархическую структуру, которая делает их удобными для хранения сложных данных.

4️⃣ Платформенная независимость:

XML является текстовым форматом, что делает его совместимым с любыми операционными системами и приложениями.

🤔 Структура XML-документа

XML-документ состоит из элементов, атрибутов и текста. Основные компоненты включают:

1️⃣ Пролог:

Опциональная часть, которая может содержать информацию о версии XML и кодировке документа.
   <?xml version="1.0" encoding="UTF-8"?>


2️⃣ Корневой элемент:

Каждый XML-документ должен иметь один корневой элемент, который содержит все остальные элементы.
   <root>
<!-- Другие элементы -->
</root>


3️⃣ Элементы (теги):

Основные строительные блоки XML-документа. Элементы могут содержать текст, другие элементы и атрибуты.
   <book>
<title>XML Basics</title>
<author>John Doe</author>
<year>2023</year>
</book>


4️⃣ Атрибуты:

Дополнительные данные, связанные с элементами. Атрибуты задаются внутри открывающего тега.
   <book genre="fiction">
<title>XML Basics</title>
<author>John Doe</author>
<year>2023</year>
</book>


🤔 Пример XML-документа
<?xml version="1.0" encoding="UTF-8"?>
<library>
<book id="1" genre="fiction">
<title>XML Basics</title>
<author>John Doe</author>
<year>2023</year>
</book>
<book id="2" genre="non-fiction">
<title>Learning XML</title>
<author>Jane Smith</author>
<year>2022</year>
</book>
</library>


🤔 Преимущества использования XML

1️⃣ Интероперабельность:

XML используется для обмена данными между различными системами и приложениями, обеспечивая совместимость.

2️⃣ Гибкость:

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

3️⃣ Стандартизация:

XML является стандартом, поддерживаемым многими технологиями и инструментами.

4️⃣ Валидация:

XML-документы могут быть проверены на соответствие определенной структуре с помощью схем XML Schema (XSD) или DTD (Document Type Definition).

🤔 Недостатки использования XML

1️⃣ Объемность:

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

2️⃣ Сложность парсинга:

Обработка и парсинг XML-документов может быть сложным и требовать значительных вычислительных ресурсов по сравнению с другими форматами, такими как JSON.

🤔 Краткий ответ

XML (Extensible Markup Language) — это язык разметки, используемый для представления структурированных данных. Он позволяет создавать гибкие, читаемые и платформенно независимые документы. XML широко используется для обмена данными между системами и поддерживается множеством технологий и инструментов.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
📌 Что такое ORM?

💬 Спрашивают в 13% собеседований

🤔 ORM (Object-Relational Mapping) — это техника программирования, которая используется для преобразования данных между несовместимыми системами типов в объектно-ориентированных языках программирования. ORM позволяет разработчикам работать с базами данных, используя объектно-ориентированную парадигму вместо традиционного написания SQL-запросов. Основные функции ORM включают:

1️⃣ Маппинг объектов: ORM сопоставляет классы и их свойства в объектно-ориентированном языке программирования с таблицами и столбцами в реляционной базе данных.

2️⃣ Автоматическое создание запросов: ORM автоматически генерирует SQL-запросы для выполнения операций с базой данных (CRUD - Create, Read, Update, Delete).

3️⃣ Управление связями: ORM обрабатывает отношения между объектами, такие как один к одному, один ко многим и многие ко многим, что упрощает управление связями между таблицами в базе данных.

4️⃣ Кэширование: Многие ORM включают механизмы кэширования, чтобы уменьшить количество обращений к базе данных и улучшить производительность приложения.

🤔 Популярные ORM-фреймворки:

Hibernate (для Java)

Entity Framework (для .NET)

SQLAlchemy (для Python)

ActiveRecord (для Ruby on Rails)

Django ORM (для Django, Python)

Использование ORM упрощает разработку приложений, позволяет избежать ошибок при написании SQL-запросов и делает код более чистым и поддерживаемым.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
📌 Какая разница у протоколов http и https ?

💬 Спрашивают в 12% собеседований

🤔 Основное различие между протоколами HTTP (HyperText Transfer Protocol) и HTTPS (HyperText Transfer Protocol Secure) заключается в уровне безопасности, который они обеспечивают при передаче данных между клиентом (например, веб-браузером) и сервером.

🤔 Основные различия:

1️⃣ Шифрование:

HTTP: Данные передаются в открытом виде, что делает их уязвимыми для перехвата и чтения злоумышленниками.

HTTPS: Данные передаются в зашифрованном виде с использованием SSL/TLS (Secure Sockets Layer/Transport Layer Security). Это обеспечивает защиту данных от перехвата и несанкционированного доступа.

2️⃣ Аутентификация:

HTTP: Отсутствует механизм аутентификации, что затрудняет проверку подлинности веб-сайта.

HTTPS: Использует сертификаты SSL/TLS, которые удостоверяют подлинность веб-сайта, подтверждая, что соединение установлено с тем сервером, с которым намеревался связаться пользователь.

3️⃣ Интегритет данных:

HTTP: Данные могут быть изменены или повреждены во время передачи, и это не будет обнаружено.

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

4️⃣ Порт:

HTTP: Использует порт 80 по умолчанию.

HTTPS: Использует порт 443 по умолчанию.

🤔 Преимущества HTTPS:

1️⃣ Безопасность: Обеспечивает защиту конфиденциальной информации, такой как логины, пароли, номера кредитных карт.

2️⃣ Доверие пользователей: Пользователи склонны больше доверять веб-сайтам, использующим HTTPS, так как это указывает на то, что сайт заботится о безопасности данных.

3️⃣SEO: Поисковые системы, такие как Google, предпочитают сайты, использующие HTTPS, и ранжируют их выше по сравнению с сайтами, использующими HTTP.

🤔 Заключение:

Использование HTTPS стало стандартом для большинства современных веб-сайтов, особенно тех, которые обрабатывают конфиденциальную информацию. Это обеспечивает безопасность, доверие пользователей и улучшенные позиции в поисковой выдаче.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔2
📌 В чем разница между Scrum и Kanban ?

💬 Спрашивают в 12% собеседований

🤔 Scrum и Kanban — это два популярных метода управления проектами и процессами, используемых в Agile-разработке. Оба они помогают командам улучшать производительность и управление работой, но имеют различные подходы и принципы. Вот основные различия между Scrum и Kanban:

🤔 Scrum:

1️⃣ Структура:

Фиксированные спринты: Работа делится на временные интервалы, называемые спринтами, обычно длительностью 2-4 недели.

Роли: В Scrum определены конкретные роли, такие как Scrum-мастер, Product Owner и команда разработки.

2️⃣ Процессы и церемонии:

Планирование спринта: Каждому спринту предшествует планирование, где команда определяет, какие задачи будут выполнены.

Ежедневные Scrum-встречи: Короткие ежедневные встречи (Stand-ups) для обсуждения прогресса, препятствий и планов на день.

Ретроспектива спринта: В конце каждого спринта команда анализирует, что прошло хорошо, что можно улучшить, и как это сделать.

3️⃣ Артефакты:

Product Backlog: Список всех задач и требований для продукта.

Sprint Backlog: Список задач, выбранных для выполнения в текущем спринте.

Burn-down Chart: График, показывающий оставшееся количество работы в спринте.

4️⃣ Изменения в ходе спринта:

Изменения в задачах не допускаются после начала спринта. Все задачи должны быть зафиксированы до начала спринта.

🤔 Kanban:

1️⃣ Структура:

Непрерывный поток работы: Kanban не имеет фиксированных временных интервалов или спринтов. Работа выполняется непрерывно.

Роли: В Kanban нет строгих определений ролей. Команда может включать любые роли по мере необходимости.

2️⃣ Процессы и церемонии:

Визуализация работы: Kanban использует доску с колонками для визуализации рабочего процесса (например, "To Do", "In Progress", "Done").

Лимиты на количество задач в работе (WIP): Ограничивает количество задач, которые могут находиться в определенных колонках одновременно, чтобы предотвратить перегрузку и улучшить поток работы.

3️⃣ Артефакты:

Kanban-доска: Основной инструмент для визуализации работы и контроля за её состоянием.

Карточки задач: Представляют отдельные задачи на Kanban-доске.

4️⃣ Изменения в ходе работы:

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

🤔 Преимущества и недостатки:

Scrum:

Преимущества: Четкая структура, регулярная обратная связь, улучшение прогнозируемости и планирования.

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

Kanban:

Преимущества: Гибкость, визуализация рабочего процесса, возможность быстрого реагирования на изменения.

Недостатки: Меньше структурированности, отсутствие фиксированных временных интервалов может привести к меньшему чувству срочности.

🤔 Выбор между Scrum и Kanban:

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

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Вопрос: Какой HTTP метод обычно используется для обновления ресурса на сервере?
Anonymous Quiz
6%
GET
21%
POST
73%
PUT
1%
DELETE
📌 Что такое git ?

💬 Спрашивают в 12% собеседований

🤔 Git — это распределённая система контроля версий, разработанная Линусом Торвальдсом в 2005 году. Она предназначена для отслеживания изменений в исходном коде во время разработки программного обеспечения. Git позволяет нескольким разработчикам работать над одним и тем же проектом одновременно, не опасаясь потерять работу или перезаписать изменения друг друга.

🤔 Основные понятия и функции Git:

1️⃣ Репозиторий (Repository):

Это хранилище для проекта, в котором хранятся все файлы и история их изменений.

2️⃣ Коммит (Commit):

Зафиксированный снимок текущего состояния файлов в репозитории. Коммиты образуют историю изменений проекта.

3️⃣ Ветвь (Branch):

Отдельная линия разработки. Ветви позволяют параллельно работать над разными функциями или исправлениями без вмешательства в основную кодовую базу.

4️⃣ Слияние (Merge):

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

5️⃣ Клон (Clone):

Создание копии удалённого репозитория на локальной машине разработчика.

6️⃣ Форк (Fork):

Создание копии чужого репозитория (обычно на платформе вроде GitHub) для внесения собственных изменений без воздействия на оригинальный проект.

7️⃣ Запрос на слияние (Pull Request или Merge Request):

Запрос на включение изменений из одной ветви в другую, часто используемый в коллаборативных платформах (например, GitHub, GitLab).

8️⃣ Ремот (Remote):

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

🤔 Основные команды Git:

git init: Создание нового локального репозитория.

git clone [URL]: Клонирование удалённого репозитория на локальную машину.

git add [файл/папка]: Добавление изменений в индекс (стадия подготовки к коммиту).

git commit -m "Сообщение": Создание коммита с заданным сообщением.

git status: Проверка состояния файлов в рабочем каталоге и индексе.

git log: Просмотр истории коммитов.

git branch: Управление ветвями (создание, просмотр, удаление).

git checkout [ветка/коммит]: Переключение между ветвями или возврат к определённому коммиту.

git merge [ветка]: Слияние указанной ветки с текущей.

git pull: Получение изменений из удалённого репозитория и слияние с текущей веткой.

git push: Отправка изменений из локального репозитория в удалённый.

🤔 Преимущества использования Git:

Распределённость: Каждый разработчик имеет полную копию истории проекта, что повышает отказоустойчивость.

Лёгкость ветвления и слияния: Git делает работу с ветками и их слиянием простой и эффективной.

Высокая производительность: Большинство операций выполняются локально, что делает их очень быстрыми.

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

🤔 Git является стандартом де-факто для контроля версий в разработке программного обеспечения благодаря своей мощности, гибкости и эффективности.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Вопрос: Какой статусный код HTTP указывает на успешное выполнение запроса?
Anonymous Quiz
93%
200
3%
400
0%
404
3%
500
📌 В чём смысл инкапсуляции ?

💬 Спрашивают в 12% собеседований

🤔 Инкапсуляция — один из основных принципов объектно-ориентированного программирования (ООП), наряду с наследованием и полиморфизмом. Смысл инкапсуляции заключается в объединении данных и методов, работающих с этими данными, в одном объекте, а также в ограничении доступа к этим данным из внешнего мира.

🤔 Основные аспекты инкапсуляции:

1️⃣ Сокрытие данных:

В инкапсуляции данные (свойства) объекта скрываются от внешнего доступа и защищаются от некорректных изменений. Это достигается путем использования модификаторов доступа (например, private, protected, public).

2️⃣ Контролируемый доступ:

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

3️⃣ Защита целостности данных:

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

🤔 Примеры инкапсуляции:

🤔 На Java:
public class Person {
private String name;
private int age;

// Конструктор
public Person(String name, int age) {
this.name = name;
this.age = age;
}

// Геттер для имени
public String getName() {
return name;
}

// Сеттер для имени
public void setName(String name) {
this.name = name;
}

// Геттер для возраста
public int getAge() {
return age;
}

// Сеттер для возраста
public void setAge(int age) {
if (age > 0) {
this.age = age;
} else {
System.out.println("Возраст должен быть положительным числом.");
}
}
}


🤔 На Python:
class Person:
def __init__(self, name, age):
self._name = name
self._age = age

# Геттер для имени
@property
def name(self):
return self._name

# Сеттер для имени
@name.setter
def name(self, name):
self._name = name

# Геттер для возраста
@property
def age(self):
return self._age

# Сеттер для возраста
@age.setter
def age(self, age):
if age > 0:
self._age = age
else:
print("Возраст должен быть положительным числом.")

# Пример использования
person = Person("John", 30)
print(person.name) # John
person.age = -5 # Возраст должен быть положительным числом.
print(person.age) # 30


🤔 Преимущества инкапсуляции:

1️⃣ Сокрытие реализации: Внешние объекты не знают, как данные реализованы и хранятся. Они работают только с публичными методами.

2️⃣ Легкость изменения и расширения: Изменения внутренней реализации не влияют на код, использующий объект, если интерфейс остается неизменным.

3️⃣ Повышение безопасности данных: Инкапсуляция позволяет защитить данные от некорректных изменений.

4️⃣ Упрощение отладки и тестирования: Так как доступ к данным контролируется, становится легче отслеживать и исправлять ошибки.

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

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Вопрос: Какой инструмент используется для управления зависимостями в проекте Node.js?
Anonymous Quiz
82%
npm
4%
pip
6%
composer
7%
maven
1
📌 Что такое операция GROUP BY ?

💬 Спрашивают в 12% собеседований

🤔 Операция `GROUP BY` — это конструкция SQL, используемая для группировки строк в таблице на основе значений одного или нескольких столбцов. Она часто используется в сочетании с агрегатными функциями (такими как COUNT, SUM, AVG, MAX, MIN), чтобы выполнять вычисления для каждой группы в результате запроса.

🤔 Основные аспекты `GROUP BY`:

1️⃣ Группировка данных:

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

2️⃣ Агрегатные функции:

В сочетании с GROUP BY часто используются агрегатные функции для выполнения вычислений на уровне групп, а не отдельных строк.

🤔 Синтаксис:
SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;


🤔 Примеры использования:

1️⃣ Пример 1: Подсчет количества записей в каждой группе

Предположим, у нас есть таблица employees со следующей структурой:

| id | department | salary |
|----|------------|--------|
| 1 | HR | 5000 |
| 2 | IT | 6000 |
| 3 | HR | 5500 |
| 4 | IT | 7000 |
| 5 | Marketing | 4500 |

Мы хотим подсчитать количество сотрудников в каждом отделе:
SELECT department, COUNT(*)
FROM employees
GROUP BY department;


🤔 Результат будет таким:

| department | count |
|------------|-------|
| HR | 2 |
| IT | 2 |
| Marketing | 1 |

2️⃣ Пример 2: Суммирование значений в каждой группе

Допустим, мы хотим узнать общую зарплату по каждому отделу:
SELECT department, SUM(salary) as total_salary
FROM employees
GROUP BY department;


🤔 Результат будет таким:

| department | total_salary |
|------------|--------------|
| HR | 10500 |
| IT | 13000 |
| Marketing | 4500 |

🤔 Важные моменты:

1️⃣ Столбцы в SELECT:

Все столбцы в операторе SELECT, которые не являются частью агрегатной функции, должны быть перечислены в GROUP BY.

2️⃣ Порядок выполнения:

GROUP BY выполняется после фильтрации строк с помощью WHERE и перед сортировкой с помощью ORDER BY.

3️⃣ Использование с HAVING:

Если необходимо отфильтровать группы после выполнения операции GROUP BY, используется HAVING.

🤔 Пример с `HAVING`:

Если мы хотим выбрать только те отделы, где общая зарплата превышает 10000:
SELECT department, SUM(salary) as total_salary
FROM employees
GROUP BY department
HAVING SUM(salary) > 10000;


🤔 Результат будет таким:

| department | total_salary |
|------------|--------------|
| HR | 10500 |
| IT | 13000 |

Операция GROUP BY является мощным инструментом для агрегирования и анализа данных в SQL, позволяя эффективно группировать и вычислять значения по определенным критериям.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Вопрос: Какой тип базы данных является нереляционной?
Anonymous Quiz
2%
MySQL
4%
PostgreSQL
90%
MongoDB
4%
SQLite