SQL и БД Learning
10.6K subscribers
760 photos
9 videos
22 files
422 links
№ 5060218708

Изучаем SQL с нуля

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/SQl_and_DB_Learning
Download Telegram
#Вопросы_с_собеседования
Какие параметры используются в конструкции order by?


ASC и DESC
👍11❤‍🔥3
#Вопросы_с_собеседования

Как GROUP BY обрабатывает значение NULL?

Ответ:
При использовании GROUP BY все значения NULL считаются равными.
👍11
Функция FIND_IN_SET()

Функция FIND_IN_SET() возвращает положение строки в списке строк.

Подробнее ознакомиться с функцией можно здесь.
👍4❤‍🔥1
#Вопросы_с_собеседования

Какие ещё ограничения вы знаете, как они работают и указываются?

SQL-ограничения (constraints) указываются при создании или изменении таблицы. Это правила для ограничения типа данных, которые могут храниться в таблице. Действие с данными не будет выполнено, если нарушаются установленные ограничения.

UNIQUE — гарантирует уникальность значений в столбце;
NOT NULL — значение не может быть NULL;
INDEX — создаёт индексы в таблице для быстрого поиска/запросов;
CHECK — значения столбца должны соответствовать заданным условиям;
DEFAULT — предоставляет столбцу значения по умолчанию.
👍10
Задача

При выборке из таблицы workers прибавьте к дате 4 дня, 3 часа, 2 минуты, 1 секунду.

Ответ на картинке.
👍9
#Вопросы_с_собеседования

Какие бывают типы подзапросов?

Существует два типа подзапросов, а именно: коррелированные и некоррелированные.

Коррелированный подзапрос: это запрос, который выбирает данные из таблицы со ссылкой на внешний запрос. Он не считается независимым запросом, поскольку ссылается на другую таблицу или столбец в таблице.
Некоррелированный подзапрос: этот запрос является независимым запросом, в котором выходные данные подзапроса подставляются в основной запрос.
👍11❤‍🔥1
#Вопросы_с_собеседования

Выберите из таблицы workers все записи за вторник

Ответ на картинке.
🖥 Как в sql посчитать количество повторяющихся значений

Можно попробовать использовать функцию COUNT() в сочетании с оператором GROUP BY.

Предположим, у нас есть таблица "orders" с колонками "customer_name" и "order_date", и мы хотим посчитать, сколько заказов было сделано каждым клиентом. Мы можем написать следующий SQL-запрос:

SELECT customer_name, COUNT(*) as order_count
FROM orders
GROUP BY customer_name


Этот запрос выберет все уникальные значения из колонки "customer_name" в таблице "orders" и подсчитает количество строк, связанных с каждым уникальным значением. Результатом запроса будет таблица со столбцами "customer_name" и "order_count", в которой каждая строка будет показывать клиента и количество его заказов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12😁2
🖥 Как работает CASE SQL

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

Оператор CASE может быть использован в двух форматах:

CASE без ELSE:
SELECT column1,
CASE
WHEN column2 = 'value1' THEN 'result1'
WHEN column2 = 'value2' THEN 'result2'
END AS column3
FROM table;


В этой форме оператора CASE используется блок WHEN для проверки значения столбца column2. Если значение равно value1, то будет возвращено значение result1. Если значение равно value2, то будет возвращено значение result2. Если значение не соответствует ни одному из условий, то для столбца column3 будет возвращено значение NULL.

CASE с ELSE:
SELECT column1,
CASE column2
WHEN 'value1' THEN 'result1'
WHEN 'value2' THEN 'result2'
ELSE 'result3'
END AS column3
FROM table;


В этой форме оператора CASE используется значение столбца column2 в блоке CASE. Если значение равно value1, то будет возвращено значение result1. Если значение равно value2, то будет возвращено значение result2. Если значение не соответствует ни одному из условий, то будет возвращено значение result3.

Оба формата оператора CASE могут использоваться в запросах на выборку данных в SQL. Они позволяют создавать условия, когда нужно выполнить различные операции в зависимости от значения столбца или выражения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1
Сравнение JSONB с hstore

Оба типа данных поддерживают хранение пар "ключ-значение", но JSONB имеет более сложную структуру, позволяющую включать массивы и вложенные объекты.

Hstore хранит данные в виде одиночных пар, что может быть удобно для простых случаев, но менее мощно для сложных структур.
👍4
🕵‍♂Использование CROSS JOIN для задач поиска пересечений в исторических данных

🔵 CROSS JOIN (или полное соединение таблиц без условий) — декартова перемножение множеств. Говоря простым языком — для каждого варианта первого множества будет сопоставлены все варианты второго множества.

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

Структура таблиц представленных примеров в изображении 1.

📕 Допустим: клиент Сидоров Степан Павлович подал заявку на кредит. На некотором этапе рассмотрения потребовался анализ платежеспособности клиента андеррайтером.
Заявка автоматически распределилась на сотрудника Петрова Екатерина Павловна.

На первый взгляд ничего подозрительного нет — в ФИО людей совпадает только отчество, что является широко распространенной ситуацией.

❗️ Однако, при детальном анализе выясняется, что девичья фамилия андеррайтера и клиента совпадают (Сидорова / Сидоров) изображение 2.

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

Для решения данной задачи можно использовать простой запрос с CROSS JOIN изображение 3.

➡️ Продолжение
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
#Вопросы_с_собеседования
Вы работаете с базой данных, где есть табли
ца Продажи, включающая поля Дата_продажи, Менеджер_ID, Сумма_продажи. Вам нужно выяснить, есть ли в базе данных дни, когда каждый менеджер совершал хотя бы одну продажу. Какой SQL-запрос вы бы использовали для решения этой задачи?

Ответ: Можно использовать следующий запрос:


SELECT Дата_продажи
FROM Продажи
GROUP BY Дата_продажи
HAVING COUNT(DISTINCT Менеджер_ID) = (SELECT COUNT(DISTINCT Менеджер_ID) FROM Продажи);


Этот запрос группирует данные по Дата_продажи и использует условие HAVING для фильтрации дней, в которые количество уникальных менеджеров, совершивших продажи, равно общему количеству уникальных менеджеров, работающих в компании. Если в компании работают менеджеры, которые не совершали продаж в какой-то из дней, эти дни отфильтровываются.
👍11❤‍🔥1
#вопросы_с_собеседований
Равен ли NULL 0 в SQL?

Нулевое значение в SQL обозначает значение, которое недоступно или назначено. Пробел (‘ ‘) или ноль (0) не эквивалентны значению NULL. Вы не можете сравнить значение NULL с любым другим значением, используя операторы сравнения, такие как “=” или”>”, поскольку оно не может быть равно или неравно любому другому значению.
👍10
usql

usql – это мощный инструмент, который позволяет легко работать с базами данных SQL и NoSQL через командную строку. Созданный на основе популярного psql от PostgreSQL, usql предоставляет удобный интерфейс для выполнения запросов и манипуляций с данными.

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

usql также предоставляет множество удобных функций, таких как подсветка синтаксиса и завершение на основе контекста. Это помогает сделать процесс написания и отладки запросов более эффективным.
👍5
#Вопросы_с_собеседования
Что такое соединения SQL и какие соединения SQL наиболее популярны?

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

В SQL существует четыре основных типа соединений: ВНУТРЕННЕЕ СОЕДИНЕНИЕ, ВНЕШНЕЕ СОЕДИНЕНИЕ, ПЕРЕКРЕСТНОЕ СОЕДИНЕНИЕ и САМОСТОЯТЕЛЬНОЕ СОЕДИНЕНИЕ.
👍8
#Вопросы_с_собеседования
Почему важно использовать параметризованные запросы в SQL вместо конкатенации строк при создании динамических запросов?


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