Оператор 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
🕵♂Использование CROSS JOIN для задач поиска пересечений в исторических данных
🔵 CROSS JOIN (или полное соединение таблиц без условий) — декартова перемножение множеств. Говоря простым языком — для каждого варианта первого множества будет сопоставлены все варианты второго множества.
• Правильное использование этого типа соединения может помочь в решении сложных задач, например, нахождении пересечений в исторических данных.
• Структура таблиц представленных примеров в изображении 1.
📕 Допустим: клиент Сидоров Степан Павлович подал заявку на кредит. На некотором этапе рассмотрения потребовался анализ платежеспособности клиента андеррайтером.
Заявка автоматически распределилась на сотрудника Петрова Екатерина Павловна.
На первый взгляд ничего подозрительного нет — в ФИО людей совпадает только отчество, что является широко распространенной ситуацией.
❗️ Однако, при детальном анализе выясняется, что девичья фамилия андеррайтера и клиента совпадают (Сидорова / Сидоров) изображение 2.
В таком случае заявка клиента должна была распределиться на другого сотрудника, чтобы решение, вынесенное по заявке, было не предвзятым.
• Для решения данной задачи можно использовать простой запрос с CROSS JOIN изображение 3.
➡️ Продолжение
• Правильное использование этого типа соединения может помочь в решении сложных задач, например, нахождении пересечений в исторических данных.
• Структура таблиц представленных примеров в изображении 1.
Заявка автоматически распределилась на сотрудника Петрова Екатерина Павловна.
На первый взгляд ничего подозрительного нет — в ФИО людей совпадает только отчество, что является широко распространенной ситуацией.
В таком случае заявка клиента должна была распределиться на другого сотрудника, чтобы решение, вынесенное по заявке, было не предвзятым.
• Для решения данной задачи можно использовать простой запрос с CROSS JOIN изображение 3.
Please open Telegram to view this post
VIEW IN TELEGRAM
#Вопросы_с_собеседования
Вы работаете с базой данных, где есть табли
Ответ: Можно использовать следующий запрос:
Этот запрос группирует данные по
Вы работаете с базой данных, где есть табли
ца Прод
ажи, включающая поля Дата_прод
ажи, Менеджер
_ID, Сумма_прод
ажи. Вам нужно выяснить, есть ли в базе данных дни, когда каждый менеджер совершал хотя бы одну продажу. Какой SQL-запрос вы бы использовали для решения этой задачи?Ответ: Можно использовать следующий запрос:
SELECT Дата_продажи
FROM Продажи
GROUP BY Дата_продажи
HAVING COUNT(DISTINCT Менеджер_ID) = (SELECT COUNT(DISTINCT Менеджер_ID) FROM Продажи);
Этот запрос группирует данные по
Дата_продажи
и использует условие HAVING
для фильтрации дней, в которые количество уникальных менеджеров, совершивших продажи, равно общему количеству уникальных менеджеров, работающих в компании. Если в компании работают менеджеры, которые не совершали продаж в какой-то из дней, эти дни отфильтровываются.#вопросы_с_собеседований
Равен ли NULL 0 в SQL?
Нулевое значение в SQL обозначает значение, которое недоступно или назначено. Пробел (‘ ‘) или ноль (0) не эквивалентны значению NULL. Вы не можете сравнить значение NULL с любым другим значением, используя операторы сравнения, такие как “=” или”>”, поскольку оно не может быть равно или неравно любому другому значению.
Равен ли NULL 0 в SQL?
Нулевое значение в SQL обозначает значение, которое недоступно или назначено. Пробел (‘ ‘) или ноль (0) не эквивалентны значению NULL. Вы не можете сравнить значение NULL с любым другим значением, используя операторы сравнения, такие как “=” или”>”, поскольку оно не может быть равно или неравно любому другому значению.
Как сэкономить свои нервы и деньги компании на перестроении структуры больших таблиц без простоя в PostgreSQL
Смотреть статью
Смотреть статью
Хабр
Как сэкономить свои нервы и деньги компании на перестроении структуры больших таблиц без простоя в PostgreSQL
Привет! Меня зовут Васильев Виктор, я DBA. В этой статье на реальных примерах расскажу, как можно сэкономить время разработчика, администратора баз данных и ресурсы сервера(ов), используя утилиту...
usql
usql – это мощный инструмент, который позволяет легко работать с базами данных SQL и NoSQL через командную строку. Созданный на основе популярного psql от PostgreSQL, usql предоставляет удобный интерфейс для выполнения запросов и манипуляций с данными.
Одной из главных особенностей usql является поддержка множества баз данных. Вы можете легко переключаться между разными базами данных, копировать данные между ними и выполнять другие операции без необходимости покидать командную строку.
usql также предоставляет множество удобных функций, таких как подсветка синтаксиса и завершение на основе контекста. Это помогает сделать процесс написания и отладки запросов более эффективным.
usql – это мощный инструмент, который позволяет легко работать с базами данных SQL и NoSQL через командную строку. Созданный на основе популярного psql от PostgreSQL, usql предоставляет удобный интерфейс для выполнения запросов и манипуляций с данными.
Одной из главных особенностей usql является поддержка множества баз данных. Вы можете легко переключаться между разными базами данных, копировать данные между ними и выполнять другие операции без необходимости покидать командную строку.
usql также предоставляет множество удобных функций, таких как подсветка синтаксиса и завершение на основе контекста. Это помогает сделать процесс написания и отладки запросов более эффективным.
#Вопросы_с_собеседования
Что такое соединения SQL и какие соединения SQL наиболее популярны?
Объединения являются фундаментальной частью управления данными в SQL. Они позволяют объединить две или более таблиц для создания единой таблицы, которую можно использовать для анализа данных. Они также предоставляют способ фильтрации результатов на основе критериев в одной таблице, что может быть полезно при попытке найти определенные строки или столбцы в большой таблице.
В SQL существует четыре основных типа соединений: ВНУТРЕННЕЕ СОЕДИНЕНИЕ, ВНЕШНЕЕ СОЕДИНЕНИЕ, ПЕРЕКРЕСТНОЕ СОЕДИНЕНИЕ и САМОСТОЯТЕЛЬНОЕ СОЕДИНЕНИЕ.
Что такое соединения SQL и какие соединения SQL наиболее популярны?
Объединения являются фундаментальной частью управления данными в SQL. Они позволяют объединить две или более таблиц для создания единой таблицы, которую можно использовать для анализа данных. Они также предоставляют способ фильтрации результатов на основе критериев в одной таблице, что может быть полезно при попытке найти определенные строки или столбцы в большой таблице.
В SQL существует четыре основных типа соединений: ВНУТРЕННЕЕ СОЕДИНЕНИЕ, ВНЕШНЕЕ СОЕДИНЕНИЕ, ПЕРЕКРЕСТНОЕ СОЕДИНЕНИЕ и САМОСТОЯТЕЛЬНОЕ СОЕДИНЕНИЕ.
#Вопросы_с_собеседования
Почему важно использовать параметризованные запросы в SQL вместо конкатенации строк при создании динамических запросов?
Использование параметризованных запросов помогает предотвратить SQL-инъекции, которые могут произойти при прямой конкатенации строк для создания динамических запросов. Параметризация обеспечивает соответствующий эскейпинг и обработку входных данных, что делает запросы более безопасными.
Почему важно использовать параметризованные запросы в SQL вместо конкатенации строк при создании динамических запросов?
Использование параметризованных запросов помогает предотвратить SQL-инъекции, которые могут произойти при прямой конкатенации строк для создания динамических запросов. Параметризация обеспечивает соответствующий эскейпинг и обработку входных данных, что делает запросы более безопасными.
#Вопросы_с_собеседования
Что такое самостоятельное присоединение?
Самосоединение настроено как запрос, используемый для сравнения с самим собой. Это используется для сравнения значений в столбце с другими значениями в том же столбце в той же таблице. ALIAS ES можно использовать для сравнения одной и той же таблицы.
Что такое самостоятельное присоединение?
Нашел, проверил, убедил: как мы организовали генерацию SQL-запросов, проверку сложных данных и при чем здесь Allure
Смотреть статью
Смотреть статью
Хабр
Нашел, проверил, убедил: как мы организовали генерацию SQL-запросов, проверку сложных данных и при чем здесь Allure
Привет, Хабр! Я, Михаил Герасимов, инженер РСХБ-Интех. Уже два года занимаюсь автоматизацией тестирования, и за это время успел написать (и переписать) немало SQL-запросов. Вместе с моим...
#Вопросы_с_собеседования
Как вы можете оптимизировать запрос SQL, который работает медленно из-за большого объема данных в таблице, не изменяя структуру таблицы и не применяя индексы?
Одним из способов оптимизации такого запроса является использование временных таблиц для хранения промежуточных результатов. Это может снизить нагрузку на основную таблицу и ускорить выполнение запроса. Также можно рассмотреть возможность пересмотра самого запроса для уменьшения объема обрабатываемых данных, например, путем более эффективного использования условий WHERE.
Как вы можете оптимизировать запрос SQL, который работает медленно из-за большого объема данных в таблице, не изменяя структуру таблицы и не применяя индексы?
Одним из способов оптимизации такого запроса является использование временных таблиц для хранения промежуточных результатов. Это может снизить нагрузку на основную таблицу и ускорить выполнение запроса. Также можно рассмотреть возможность пересмотра самого запроса для уменьшения объема обрабатываемых данных, например, путем более эффективного использования условий WHERE.
MS Access: DateSerial
DateSerial - это функция, которая позволяет создавать даты в MS Access на основе года, месяца и дня.
DateSerial - создание даты
Функция DateSerial принимает три аргумента: год, месяц и день. Она возвращает дату в виде значения типа Date.
DateSerial - использование с другими функциями
DateSerial можно использовать с другими функциями MS Access для выполнения различных операций с датами.
DateSerial - это функция, которая позволяет создавать даты в MS Access на основе года, месяца и дня.
DateSerial - создание даты
Функция DateSerial принимает три аргумента: год, месяц и день. Она возвращает дату в виде значения типа Date.
DateSerial - использование с другими функциями
DateSerial можно использовать с другими функциями MS Access для выполнения различных операций с датами.
Отличаются ли в SQL операторы AND и &(амперсанд) ?
Anonymous Quiz
41%
Оператор & не поддерживается стандартом SQL
16%
AND имеет более низкий приоритет по сравнению с &
13%
Между ними нет отличий
16%
Приоритет AND выше, чем приоритет &
14%
Посмотреть ответы
Что вы знаете о функции STUFF(Transact-SQL)?
Функция STUFF вставляет одну строку в другую, начиная с указанной позиции. При этом в исходной строке, начиная с указанной позиции, удаляются символы в количестве, определенном в параметре Length.
Другими словами STUFF вставляет одну строку в другую. Она удаляет указанное количество символов первой строки в начальной позиции и вставляет на их место вторую строку.
Синтаксис:
STUFF(String1, Position, Length, String2)
Пример:
Результат:
Функция STUFF вставляет одну строку в другую, начиная с указанной позиции. При этом в исходной строке, начиная с указанной позиции, удаляются символы в количестве, определенном в параметре Length.
Другими словами STUFF вставляет одну строку в другую. Она удаляет указанное количество символов первой строки в начальной позиции и вставляет на их место вторую строку.
Синтаксис:
STUFF(String1, Position, Length, String2)
Здесь String1
— это строка, которая будет перезаписана. Position определяет стартовую позицию для перезаписи строки. Length
— это длина подстроки, которая будет удалена из исходной строки. String2
— это строка, которая будет вставлена в String1.
Пример:
SELECT STUFF(‘SQL Tutorial’,1,3,’Python’)
В результате работы функции «SQL Tutorial» превратится в «Python Tutorial».
Результат:
Python Tutorial