Что покажет следующий запрос:
select * from Orders where date between '2017-01-01' and '2017-12-31'
select * from Orders where date between '2017-01-01' and '2017-12-31'
Anonymous Quiz
4%
Все данные по заказам, совершенным за 2017 год, за исключением 01 января 2017 года
14%
Все данные по заказам, совершенным за 2017 год, за исключением 31 декабря 2017 года
67%
Все данные по заказам, совершенным за 2017 год
10%
Ничего: запрос составлен неверно
4%
Посмотреть ответ
😱14👍6❤2🔥1
JSON_VALUE в Microsoft SQL Server
JSON_VALUE - это функция в Microsoft SQL Server, которая извлекает значение из JSON-объекта по заданному пути.
Синтаксис функции JSON_VALUE выглядит следующим образом: JSON_VALUE (expression, path)
-expression - это JSON-объект, из которого нужно извлечь значение.
- path - это путь к значению внутри JSON-объекта.
Функция JSON_VALUE также может использоваться в фильтрах WHERE.
JSON_VALUE - это функция в Microsoft SQL Server, которая извлекает значение из JSON-объекта по заданному пути.
Синтаксис функции JSON_VALUE выглядит следующим образом: JSON_VALUE (expression, path)
-expression - это JSON-объект, из которого нужно извлечь значение.
- path - это путь к значению внутри JSON-объекта.
Функция JSON_VALUE также может использоваться в фильтрах WHERE.
👍5🔥1
Суррогатные ключи
В базах данных ключ - это поле или набор полей, которые однозначно идентифицируют запись в таблице. Суррогатный ключ - это ключ, который используется вместо естественного ключа, который может быть слишком сложным или неустойчивым для использования в качестве ключа.
Например, в таблице базы данных, содержащей информацию о сотрудниках, естественный ключ может быть сочетанием имени, фамилии и даты рождения. Однако, если имя или фамилия сотрудника изменятся, ключ также должен быть изменен, что может привести к проблемам с целостностью данных. В этом случае использование суррогатного ключа, такого как уникальный идентификатор, может быть более надежным.
Разбор примера с фото:
В этом примере, id является суррогатным ключом, который генерируется автоматически при каждом вставке новой записи. Он гарантирует уникальность каждой записи и не зависит от других полей таблицы.
Существует несколько преимуществ использования суррогатных ключей в SQL:
1. Простота и удобство в использовании.
2. Улучшение производительности при выполнении операций вставки и обновления.
3. Улучшение целостности данных, так как суррогатный ключ не зависит от других полей таблицы.
4. Удобство для программистов при написании запросов, так как они могут использовать суррогатный ключ вместо нескольких полей для поиска конкретной записи в таблице.
В базах данных ключ - это поле или набор полей, которые однозначно идентифицируют запись в таблице. Суррогатный ключ - это ключ, который используется вместо естественного ключа, который может быть слишком сложным или неустойчивым для использования в качестве ключа.
Например, в таблице базы данных, содержащей информацию о сотрудниках, естественный ключ может быть сочетанием имени, фамилии и даты рождения. Однако, если имя или фамилия сотрудника изменятся, ключ также должен быть изменен, что может привести к проблемам с целостностью данных. В этом случае использование суррогатного ключа, такого как уникальный идентификатор, может быть более надежным.
Разбор примера с фото:
В этом примере, id является суррогатным ключом, который генерируется автоматически при каждом вставке новой записи. Он гарантирует уникальность каждой записи и не зависит от других полей таблицы.
Существует несколько преимуществ использования суррогатных ключей в SQL:
1. Простота и удобство в использовании.
2. Улучшение производительности при выполнении операций вставки и обновления.
3. Улучшение целостности данных, так как суррогатный ключ не зависит от других полей таблицы.
4. Удобство для программистов при написании запросов, так как они могут использовать суррогатный ключ вместо нескольких полей для поиска конкретной записи в таблице.
👍10❤3🔥2
Поиск референта заказчика
Напишите SQL-запрос, чтобы вывести в отчет имена клиентов, на которых не ссылается клиент с id = 2.
Верните таблицу результатов в любом порядке.
В решении будет подход с использованием: <>(!=) и IS NULL
Некоторые интуитивно приходят к следующему решению.
SELECT name FROM customer WHERE referee_Id <> 2;
Однако этот запрос вернет только один результат: Zack, хотя есть 4 клиента, которых не направляла Jane (включая саму Jane). Все клиенты, которых вообще никто не приводил (значение NULL в столбце referee_id), не отображаются.
Алгоритм
В MySQL используется трехзначная логика - TRUE, FALSE и UNKNOWN. Все, что сравнивается с NULL, оценивается в третье значение: UNKNOWN. Это "все" включает в себя и само значение NULL! Именно поэтому в MySQL предусмотрены операторы IS NULL и IS NOT NULL, специально проверяющие наличие NULL.
Таким образом, в предложение WHERE необходимо добавить еще одно условие 'referee_id IS NULL'.
Напишите SQL-запрос, чтобы вывести в отчет имена клиентов, на которых не ссылается клиент с id = 2.
Верните таблицу результатов в любом порядке.
В решении будет подход с использованием: <>(!=) и IS NULL
Некоторые интуитивно приходят к следующему решению.
SELECT name FROM customer WHERE referee_Id <> 2;
Однако этот запрос вернет только один результат: Zack, хотя есть 4 клиента, которых не направляла Jane (включая саму Jane). Все клиенты, которых вообще никто не приводил (значение NULL в столбце referee_id), не отображаются.
Алгоритм
В MySQL используется трехзначная логика - TRUE, FALSE и UNKNOWN. Все, что сравнивается с NULL, оценивается в третье значение: UNKNOWN. Это "все" включает в себя и само значение NULL! Именно поэтому в MySQL предусмотрены операторы IS NULL и IS NOT NULL, специально проверяющие наличие NULL.
Таким образом, в предложение WHERE необходимо добавить еще одно условие 'referee_id IS NULL'.
👍5🔥1
Ранжирующая функция NTILE()
Функция NTILE() является частью языка SQL и используется для разделения результата запроса на определенное количество групп или сегментов. Эта функция принимает один аргумент - количество сегментов на которые нужно разделить результат.
Функция NTILE() является частью языка SQL и используется для разделения результата запроса на определенное количество групп или сегментов. Эта функция принимает один аргумент - количество сегментов на которые нужно разделить результат.
👍9🔥1
REPLICATE в SQL Server
REPLICATE - это функция в SQL Server, которая повторяет входную строку указанное количество раз. Эта функция может быть полезна во многих сценариях, например, при создании тестовых данных или при форматировании вывода.
Синтаксис функции REPLICATE выглядит следующим образом:
REPLICATE ( string_expression , integer_expression )
- string_expression - это строковое выражение, которое нужно повторить.
- integer_expression - это выражение целого типа, определяющее количество раз, которое нужно повторить строку.
REPLICATE - это функция в SQL Server, которая повторяет входную строку указанное количество раз. Эта функция может быть полезна во многих сценариях, например, при создании тестовых данных или при форматировании вывода.
Синтаксис функции REPLICATE выглядит следующим образом:
REPLICATE ( string_expression , integer_expression )
- string_expression - это строковое выражение, которое нужно повторить.
- integer_expression - это выражение целого типа, определяющее количество раз, которое нужно повторить строку.
👍5
Преобразование xml-поля в SQL
Для преобразования xml-поля в SQL необходимо выполнить следующие шаги:
1. Создать таблицу в базе данных с полем типа xml.
2. Вставить данные в таблицу.
3. Использовать функции для извлечения данных из xml-поля.
Например, функция value() извлекает значение элемента или атрибута из xml-поля.
4. При необходимости, выполнить другие действия с данными, полученными из xml-поля, с помощью стандартных средств SQL.
Для преобразования xml-поля в SQL необходимо выполнить следующие шаги:
1. Создать таблицу в базе данных с полем типа xml.
2. Вставить данные в таблицу.
3. Использовать функции для извлечения данных из xml-поля.
Например, функция value() извлекает значение элемента или атрибута из xml-поля.
4. При необходимости, выполнить другие действия с данными, полученными из xml-поля, с помощью стандартных средств SQL.
👍4
Все о jsonb_to_recordset в SQL
Функция jsonb_to_recordset в SQL используется для преобразования данных, хранящихся в формате JSON, в таблицы. Она позволяет распаковывать массивы и объекты JSON и превращать их в строки и столбцы в таблице.
Кроме того, jsonb_to_recordset позволяет работать с вложенными объектами и массивами. Для этого нужно использовать функцию jsonb_each, которая распаковывает объекты и массивы JSON в отдельные строки.
Функция jsonb_to_recordset в SQL используется для преобразования данных, хранящихся в формате JSON, в таблицы. Она позволяет распаковывать массивы и объекты JSON и превращать их в строки и столбцы в таблице.
Кроме того, jsonb_to_recordset позволяет работать с вложенными объектами и массивами. Для этого нужно использовать функцию jsonb_each, которая распаковывает объекты и массивы JSON в отдельные строки.
👍3🔥1
BINARY - MySQL
BINARY - это тип данных, который используется для хранения двоичных данных. Этот тип данных может быть использован для хранения любых данных, которые не могут быть интерпретированы как символы, такие как изображения, звуковые файлы, видео и т.д.
BINARY имеет следующие характеристики:
- Фиксированная длина: Длина поля BINARY всегда фиксирована и задается при создании таблицы. Например, если вы создаете поле BINARY(10), то оно всегда будет занимать 10 байт в таблице, даже если вы вставляете данные меньшего размера.
- Регистрозависимость: Данные типа BINARY регистрозависимы, что означает, что значения 'abc' и 'ABC' будут различаться, даже если они имеют одинаковую длину.
- Сравнение: Для сравнения данных типа BINARY используется бинарное сравнение, то есть двоичный код каждого символа сравнивается отдельно.
- Индексирование: Поля типа BINARY могут быть проиндексированы, что повышает скорость поиска данных.
BINARY - это тип данных, который используется для хранения двоичных данных. Этот тип данных может быть использован для хранения любых данных, которые не могут быть интерпретированы как символы, такие как изображения, звуковые файлы, видео и т.д.
BINARY имеет следующие характеристики:
- Фиксированная длина: Длина поля BINARY всегда фиксирована и задается при создании таблицы. Например, если вы создаете поле BINARY(10), то оно всегда будет занимать 10 байт в таблице, даже если вы вставляете данные меньшего размера.
- Регистрозависимость: Данные типа BINARY регистрозависимы, что означает, что значения 'abc' и 'ABC' будут различаться, даже если они имеют одинаковую длину.
- Сравнение: Для сравнения данных типа BINARY используется бинарное сравнение, то есть двоичный код каждого символа сравнивается отдельно.
- Индексирование: Поля типа BINARY могут быть проиндексированы, что повышает скорость поиска данных.
👍2🔥1
MySQL: PERIOD_ADD
PERIOD_ADD является одной из функций MySQL, которая используется для добавления количества периодов к указанной дате. Эта функция особенно полезна в тех случаях, когда вам нужно добавить несколько месяцев или лет к дате.
Синтаксис PERIOD_ADD выглядит следующим образом:
PERIOD_ADD(P,N) - где P - это период в формате YYMM или YYYYMM, а N - это количество периодов, которые нужно добавить к указанной дате.
PERIOD_ADD является одной из функций MySQL, которая используется для добавления количества периодов к указанной дате. Эта функция особенно полезна в тех случаях, когда вам нужно добавить несколько месяцев или лет к дате.
Синтаксис PERIOD_ADD выглядит следующим образом:
PERIOD_ADD(P,N) - где P - это период в формате YYMM или YYYYMM, а N - это количество периодов, которые нужно добавить к указанной дате.
🔥2👍1
JSON_QUERY в Microsoft SQL Server
JSON_QUERY является одним из встроенных операторов, который позволяет извлекать данные из JSON-документов в Microsoft SQL Server. Оператор JSON_QUERY возвращает фрагмент JSON-данных, который удовлетворяет определенному условию.
Синтаксис оператора JSON_QUERY: JSON_QUERY (expression, path)
- expression - это JSON-документ или JSON-фрагмент.
- path - это выражение, которое определяет, какая часть JSON-документа должна быть выбрана.
JSON_QUERY является одним из встроенных операторов, который позволяет извлекать данные из JSON-документов в Microsoft SQL Server. Оператор JSON_QUERY возвращает фрагмент JSON-данных, который удовлетворяет определенному условию.
Синтаксис оператора JSON_QUERY: JSON_QUERY (expression, path)
- expression - это JSON-документ или JSON-фрагмент.
- path - это выражение, которое определяет, какая часть JSON-документа должна быть выбрана.
👍5
Поиск значений в таблице, которые не совпадают с другой таблицей
Для выполнения поиска значений в таблице, которые не совпадают с другой таблицей в SQL, можно использовать операторы JOIN, NOT IN и NOT EXISTS.
1. JOIN - используется для объединения двух таблиц по заданному условию. Для поиска значений, которые не совпадают, можно использовать LEFT JOIN или RIGHT JOIN, а затем выбрать строки с NULL значениями в столбцах таблицы-присоединения.
2. NOT IN - спользуется для выбора значений из одной таблицы, которые не содержатся в другой таблице.
3. NOT EXISTS - используется для проверки наличия значений в подзапросе и выбора строк, которые не имеют соответствия в другой таблице.
Для выполнения поиска значений в таблице, которые не совпадают с другой таблицей в SQL, можно использовать операторы JOIN, NOT IN и NOT EXISTS.
1. JOIN - используется для объединения двух таблиц по заданному условию. Для поиска значений, которые не совпадают, можно использовать LEFT JOIN или RIGHT JOIN, а затем выбрать строки с NULL значениями в столбцах таблицы-присоединения.
2. NOT IN - спользуется для выбора значений из одной таблицы, которые не содержатся в другой таблице.
3. NOT EXISTS - используется для проверки наличия значений в подзапросе и выбора строк, которые не имеют соответствия в другой таблице.
👍10
Онлайн перестроение таблицы в PostgreSQL
В PostgreSQL существует возможность выполнения онлайн перестроения таблицы без блокировки записи. Для этого используется расширение pg_repack.
Для начала необходимо установить расширение pg_repack. Это можно сделать с помощью команды:
CREATE EXTENSION pg_repack;
После установки расширения, можно выполнить перестроение таблицы с помощью команды:
SELECT pg_repack('public.{table_name}');
Эта команда выполнит перестроение таблицы без блокировки записи. Однако, если во время перестроения таблицы происходят операции вставки, обновления или удаления, то они могут быть заблокированы до завершения перестроения.
Для выполнения онлайн перестроения таблицы необходимо иметь достаточно свободного места на диске, так как pg_repack создает временные файлы в процессе работы.
В PostgreSQL существует возможность выполнения онлайн перестроения таблицы без блокировки записи. Для этого используется расширение pg_repack.
Для начала необходимо установить расширение pg_repack. Это можно сделать с помощью команды:
CREATE EXTENSION pg_repack;
После установки расширения, можно выполнить перестроение таблицы с помощью команды:
SELECT pg_repack('public.{table_name}');
Эта команда выполнит перестроение таблицы без блокировки записи. Однако, если во время перестроения таблицы происходят операции вставки, обновления или удаления, то они могут быть заблокированы до завершения перестроения.
Для выполнения онлайн перестроения таблицы необходимо иметь достаточно свободного места на диске, так как pg_repack создает временные файлы в процессе работы.
👍3
Оператор CROSS APPLY
CROSS APPLY - это оператор, который применяет правую таблицу выражения к каждой строке левой таблицы выражения и возвращает только те строки, которые имеют соответствующие значения в правой таблице выражения.
Оператор CROSS APPLY очень похож на оператор JOIN, но в отличие от JOIN, оператор CROSS APPLY может использоваться с табличными функциями, что позволяет более эффективно объединять данные из разных таблиц.
В примере с фото мы используем оператор CROSS APPLY, чтобы присоединить к каждому клиенту его последний заказ. Мы используем табличную функцию, которая возвращает максимальную дату заказа для каждого клиента.
CROSS APPLY - это оператор, который применяет правую таблицу выражения к каждой строке левой таблицы выражения и возвращает только те строки, которые имеют соответствующие значения в правой таблице выражения.
Оператор CROSS APPLY очень похож на оператор JOIN, но в отличие от JOIN, оператор CROSS APPLY может использоваться с табличными функциями, что позволяет более эффективно объединять данные из разных таблиц.
В примере с фото мы используем оператор CROSS APPLY, чтобы присоединить к каждому клиенту его последний заказ. Мы используем табличную функцию, которая возвращает максимальную дату заказа для каждого клиента.
👍8❤4
Есть ли преимущество в использовании IN вместо множества OR в SQL?
Когда нужно выполнить выборку данных из таблицы, можно использовать операторы IN и OR для задания условий. Однако, есть различия в использовании этих операторов.
🟠 Оператор IN позволяет задать несколько значений, которые должны быть найдены в столбце таблицы.
🟠 Оператор OR позволяет задать несколько условий, которые должны быть выполнены.
В целом, использование оператора IN более эффективно, чем использование множества операторов OR. Это связано с тем, что при использовании OR, каждое условие проверяется отдельно, что может привести к большому количеству операций. В случае с IN, все значения проверяются одновременно, что позволяет сделать запрос более быстрым и эффективным.
Также, использование оператора IN может упростить написание запроса и сделать его более лаконичным, особенно если нужно проверять большое количество значений.
Как правило, рекомендуется использовать оператор IN, если это возможно, вместо множества операторов OR.
Когда нужно выполнить выборку данных из таблицы, можно использовать операторы IN и OR для задания условий. Однако, есть различия в использовании этих операторов.
В целом, использование оператора IN более эффективно, чем использование множества операторов OR. Это связано с тем, что при использовании OR, каждое условие проверяется отдельно, что может привести к большому количеству операций. В случае с IN, все значения проверяются одновременно, что позволяет сделать запрос более быстрым и эффективным.
Также, использование оператора IN может упростить написание запроса и сделать его более лаконичным, особенно если нужно проверять большое количество значений.
Как правило, рекомендуется использовать оператор IN, если это возможно, вместо множества операторов OR.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1
Извлекаем имя из адреса электронной почты SQL
Для извлечения имени из адреса электронной почты в SQL можно использовать функции CHARINDEX и LEFT.
В запросе мы используем функцию CHARINDEX для нахождения символа "@" в строке email. Затем мы используем функцию LEFT, чтобы извлечь часть строки до символа "@", которая является именем.
Просто замените your_table на имя вашей таблицы и email на имя столбца, содержащего адреса электронной почты.
Для извлечения имени из адреса электронной почты в SQL можно использовать функции CHARINDEX и LEFT.
В запросе мы используем функцию CHARINDEX для нахождения символа "@" в строке email. Затем мы используем функцию LEFT, чтобы извлечь часть строки до символа "@", которая является именем.
Просто замените your_table на имя вашей таблицы и email на имя столбца, содержащего адреса электронной почты.
👍11❤1🔥1
#разбор_кода
Найдите идентификаторы продуктов, которые одновременно содержат мало жира и подлежат переработке.
Таблица с идентификаторами - 1 фото.
Пример кода с решением - 2 фото.
Интуиция, лежащая в основе приведенного решения, заключается в использовании простого SQL-запроса для фильтрации строк в таблице Products на основе заданных условий. Запрос выбирает столбец product_id из таблицы, где low_fats - 'Y' и recyclable - 'Y'.
Объяснение:
1. Запрос начинается с указания условия SELECT для получения столбца product_id.
2. В предложении FROM указывается имя таблицы "Продукты", из которой будут выбраны данные.
3. Предложение WHERE используется для применения условий фильтрации. Он проверяет, что значение low_fats равно 'Y' (указывает на низкое содержание жира), а значение recyclable равно 'Y' (указывает на возможность переработки).
4. Результатом запроса будут значения product_id, удовлетворяющие заданным условиям.
Найдите идентификаторы продуктов, которые одновременно содержат мало жира и подлежат переработке.
Таблица с идентификаторами - 1 фото.
Пример кода с решением - 2 фото.
Интуиция, лежащая в основе приведенного решения, заключается в использовании простого SQL-запроса для фильтрации строк в таблице Products на основе заданных условий. Запрос выбирает столбец product_id из таблицы, где low_fats - 'Y' и recyclable - 'Y'.
Объяснение:
1. Запрос начинается с указания условия SELECT для получения столбца product_id.
2. В предложении FROM указывается имя таблицы "Продукты", из которой будут выбраны данные.
3. Предложение WHERE используется для применения условий фильтрации. Он проверяет, что значение low_fats равно 'Y' (указывает на низкое содержание жира), а значение recyclable равно 'Y' (указывает на возможность переработки).
4. Результатом запроса будут значения product_id, удовлетворяющие заданным условиям.
👍4
Суррогатные ключи
В базах данных ключ - это поле или набор полей, которые однозначно идентифицируют запись в таблице. Суррогатный ключ - это ключ, который используется вместо естественного ключа, который может быть слишком сложным или неустойчивым для использования в качестве ключа.
Например, в таблице базы данных, содержащей информацию о сотрудниках, естественный ключ может быть сочетанием имени, фамилии и даты рождения. Однако, если имя или фамилия сотрудника изменятся, ключ также должен быть изменен, что может привести к проблемам с целостностью данных. В этом случае использование суррогатного ключа, такого как уникальный идентификатор, может быть более надежным.
Разбор примера с фото:
В этом примере, id является суррогатным ключом, который генерируется автоматически при каждом вставке новой записи. Он гарантирует уникальность каждой записи и не зависит от других полей таблицы.
Существует несколько преимуществ использования суррогатных ключей в SQL:
1. Простота и удобство в использовании.
2. Улучшение производительности при выполнении операций вставки и обновления.
3. Улучшение целостности данных, так как суррогатный ключ не зависит от других полей таблицы.
4. Удобство для программистов при написании запросов, так как они могут использовать суррогатный ключ вместо нескольких полей для поиска конкретной записи в таблице.
В базах данных ключ - это поле или набор полей, которые однозначно идентифицируют запись в таблице. Суррогатный ключ - это ключ, который используется вместо естественного ключа, который может быть слишком сложным или неустойчивым для использования в качестве ключа.
Например, в таблице базы данных, содержащей информацию о сотрудниках, естественный ключ может быть сочетанием имени, фамилии и даты рождения. Однако, если имя или фамилия сотрудника изменятся, ключ также должен быть изменен, что может привести к проблемам с целостностью данных. В этом случае использование суррогатного ключа, такого как уникальный идентификатор, может быть более надежным.
Разбор примера с фото:
В этом примере, id является суррогатным ключом, который генерируется автоматически при каждом вставке новой записи. Он гарантирует уникальность каждой записи и не зависит от других полей таблицы.
Существует несколько преимуществ использования суррогатных ключей в SQL:
1. Простота и удобство в использовании.
2. Улучшение производительности при выполнении операций вставки и обновления.
3. Улучшение целостности данных, так как суррогатный ключ не зависит от других полей таблицы.
4. Удобство для программистов при написании запросов, так как они могут использовать суррогатный ключ вместо нескольких полей для поиска конкретной записи в таблице.
👍5🔥1