Какая из следующих команд не является аггрегирующей?
Anonymous Quiz
7%
AVG()
38%
ROUND()
9%
SUM()
46%
FIRST()
👍8😱1
Обработка исключений в SQL Server
В SQL Server для обработки исключений используется конструкция TRY-CATCH. Условия записываются внутри блока TRY, а исключения перехватываются в блоке CATCH.
Использование конструкции TRY-CATCH очень важно для обработки исключительных ситуаций в SQL Server. Она позволяет более гибко управлять ошибками и уведомлять об их возникновении.
В SQL Server для обработки исключений используется конструкция TRY-CATCH. Условия записываются внутри блока TRY, а исключения перехватываются в блоке CATCH.
Использование конструкции TRY-CATCH очень важно для обработки исключительных ситуаций в SQL Server. Она позволяет более гибко управлять ошибками и уведомлять об их возникновении.
👍7🔥1
Функция SQL Server: ISNUMERIC
Функция ISNUMERIC используется в SQL Server для проверки, является ли выражение числом или нет. Она возвращает 1, если выражение может быть преобразовано в число, и 0, если нет.
Пример использования функции ISNUMERIC:
SELECT ISNUMERIC('123') -- вернет 1
SELECT ISNUMERIC('abc') -- вернет 0
SELECT ISNUMERIC('$12.34') -- вернет 0
Использование функции ISNUMERIC следует применять с осторожностью, так как она может быть не совсем точной. Например, она может вернуть 1 для строк, которые в действительности не являются числами, например, для строк, содержащих знаки пунктуации.
Функция ISNUMERIC используется в SQL Server для проверки, является ли выражение числом или нет. Она возвращает 1, если выражение может быть преобразовано в число, и 0, если нет.
Пример использования функции ISNUMERIC:
SELECT ISNUMERIC('123') -- вернет 1
SELECT ISNUMERIC('abc') -- вернет 0
SELECT ISNUMERIC('$12.34') -- вернет 0
Использование функции ISNUMERIC следует применять с осторожностью, так как она может быть не совсем точной. Например, она может вернуть 1 для строк, которые в действительности не являются числами, например, для строк, содержащих знаки пунктуации.
👍5🔥4
Различия между операторами IN и EXISTS
Операторы IN и EXISTS - операторы, которые используются для фильтрации данных в запросах. Они имеют различия в своем использовании и функционале.
1. Оператор IN используется для сравнения значения столбца с набором значений, указанных в запросе. Он возвращает значение true, если значение столбца соответствует хотя бы одному из значений в списке. См. Пример 1.
2. Оператор EXISTS используется для проверки наличия записей в подзапросе. Если подзапрос возвращает хотя бы одну запись, то оператор EXISTS возвращает значение true. См. Пример 2.
Различия между операторами IN и EXISTS:
- Оператор IN используется для сравнения значения столбца с набором значений, а оператор EXISTS для проверки наличия записей в подзапросе.
- Оператор IN не требует наличия связи между таблицами, а оператор EXISTS требует наличия связи между основной таблицей и подзапросом.
- Оператор IN может использовать список значений или подзапрос, а оператор EXISTS может использовать только подзапрос.
Операторы IN и EXISTS - операторы, которые используются для фильтрации данных в запросах. Они имеют различия в своем использовании и функционале.
1. Оператор IN используется для сравнения значения столбца с набором значений, указанных в запросе. Он возвращает значение true, если значение столбца соответствует хотя бы одному из значений в списке. См. Пример 1.
2. Оператор EXISTS используется для проверки наличия записей в подзапросе. Если подзапрос возвращает хотя бы одну запись, то оператор EXISTS возвращает значение true. См. Пример 2.
Различия между операторами IN и EXISTS:
- Оператор IN используется для сравнения значения столбца с набором значений, а оператор EXISTS для проверки наличия записей в подзапросе.
- Оператор IN не требует наличия связи между таблицами, а оператор EXISTS требует наличия связи между основной таблицей и подзапросом.
- Оператор IN может использовать список значений или подзапрос, а оператор EXISTS может использовать только подзапрос.
👍10😱3
Разница между функциями CHARINDEX и SUBSTR
1. Функция CHARINDEX используется для поиска подстроки в строке и возвращает позицию первого вхождения этой подстроки. Синтаксис функции выглядит следующим образом:
CHARINDEX('подстрока', 'строка') - где 'подстрока' - искомая подстрока, а 'строка' - строка, в которой происходит поиск.
2. Функция SUBSTR используется для извлечения подстроки из строки. Синтаксис функции выглядит следующим образом:
SUBSTR('строка', начальная_позиция, длина) - где 'строка' - строка, из которой извлекается подстрока, начальная_позиция - позиция, с которой начинается извлечение подстроки (отсчет начинается с 1), а длина - количество символов, которые нужно извлечь.
1. Функция CHARINDEX используется для поиска подстроки в строке и возвращает позицию первого вхождения этой подстроки. Синтаксис функции выглядит следующим образом:
CHARINDEX('подстрока', 'строка') - где 'подстрока' - искомая подстрока, а 'строка' - строка, в которой происходит поиск.
2. Функция SUBSTR используется для извлечения подстроки из строки. Синтаксис функции выглядит следующим образом:
SUBSTR('строка', начальная_позиция, длина) - где 'строка' - строка, из которой извлекается подстрока, начальная_позиция - позиция, с которой начинается извлечение подстроки (отсчет начинается с 1), а длина - количество символов, которые нужно извлечь.
👍8
Индекс GIN
Индекс GIN - это тип индекса в PostgreSQL, который позволяет эффективно искать данные в полнотекстовых полях, массивах, JSON и других типах данных. Он создается на столбцах с комплексными или составными типами данных, такими как полнотекстовые данные или JSON. Индекс разбивает значения в столбце на отдельные элементы и создает отображение между этими элементами и строками в таблице, что позволяет быстро искать значения в этих типах данных.
Преимущества использования индекса GIN:
- Быстрый поиск по полнотекстовым данным и другим составным типам данных
- Поддержка операций поиска, включая поиск по подстроке и полнотекстовый поиск
- Поддержка операций над массивами, такие как поиск элементов массива и проверка наличия значения в массиве
- Возможность использования в комбинации с другими индексами для дополнительной оптимизации запросов
Создание индекса осуществляется с указанием типа индекса как GIN и имени столбца, на котором создается индекс.
Пример: CREATE INDEX idx_gin ON mytable USING GIN (mycolumn);
Использование индекса GIN в запросах выполняется с помощью оператора @@ или функции tsquery.
Индекс GIN - это тип индекса в PostgreSQL, который позволяет эффективно искать данные в полнотекстовых полях, массивах, JSON и других типах данных. Он создается на столбцах с комплексными или составными типами данных, такими как полнотекстовые данные или JSON. Индекс разбивает значения в столбце на отдельные элементы и создает отображение между этими элементами и строками в таблице, что позволяет быстро искать значения в этих типах данных.
Преимущества использования индекса GIN:
- Быстрый поиск по полнотекстовым данным и другим составным типам данных
- Поддержка операций поиска, включая поиск по подстроке и полнотекстовый поиск
- Поддержка операций над массивами, такие как поиск элементов массива и проверка наличия значения в массиве
- Возможность использования в комбинации с другими индексами для дополнительной оптимизации запросов
Создание индекса осуществляется с указанием типа индекса как GIN и имени столбца, на котором создается индекс.
Пример: CREATE INDEX idx_gin ON mytable USING GIN (mycolumn);
Использование индекса GIN в запросах выполняется с помощью оператора @@ или функции tsquery.
❤5👍3
#вопросы_с_собеседований
Напиши SQL-код, выводящий календарь с таблицей, днями недели и числами
Решение:
Для вывода календаря текущего месяца в виде таблицы с днями недели и числами можно воспользоваться кодом с фото.
В этом коде мы используем функции MySQL для работы с датами. Сначала мы выбираем последний день месяца и добавляем к нему 1 день, затем вычитаем из этой даты количество дней, прошедших с начала месяца, чтобы получить первый день текущего месяца.
Далее мы генерируем таблицу с днями недели (от 0 до 6) и присоединяем ее к таблице с датами. Затем мы выбираем число дня месяца и название дня недели для каждой даты и сортируем их по возрастанию даты.
Результат выполнения данного кода будет соответствовать требуемому формату календаря на текущий месяц.
Напиши SQL-код, выводящий календарь с таблицей, днями недели и числами
Решение:
Для вывода календаря текущего месяца в виде таблицы с днями недели и числами можно воспользоваться кодом с фото.
В этом коде мы используем функции MySQL для работы с датами. Сначала мы выбираем последний день месяца и добавляем к нему 1 день, затем вычитаем из этой даты количество дней, прошедших с начала месяца, чтобы получить первый день текущего месяца.
Далее мы генерируем таблицу с днями недели (от 0 до 6) и присоединяем ее к таблице с датами. Затем мы выбираем число дня месяца и название дня недели для каждой даты и сортируем их по возрастанию даты.
Результат выполнения данного кода будет соответствовать требуемому формату календаря на текущий месяц.
👍7🔥3
PostgreSQL_Python.pdf
677.1 KB
🔥 Полезная Шпаргалка-гайд по работе с Python и PostgreSQL.
Все от установки и соединение с БД до создания таблиц и работы с полями.
Все от установки и соединение с БД до создания таблиц и работы с полями.
👍5🔥3
Быстро получаем количество записей в большой таблице
отображение общего кол-ва записей в админках
Первый запрос - возвращает точное количество записей, но может быть медленным.
Второй запрос - возвращает приблизительное количество записей, но быстрее, чем первый запрос. Точность данного запроса выше, чем у следующего, но для его выполнения требуется актуальная статистика по таблице.
Третий запрос - возвращает приблизительное количество записей, но быстрее, чем первый запрос.
Точность третьего запроса ниже, чем у предыдущего, но для его выполнения не требуется актуальная статистика по таблице. Преимуществом данного подхода является возможность задавать условие выборки.
отображение общего кол-ва записей в админках
Первый запрос - возвращает точное количество записей, но может быть медленным.
Второй запрос - возвращает приблизительное количество записей, но быстрее, чем первый запрос. Точность данного запроса выше, чем у следующего, но для его выполнения требуется актуальная статистика по таблице.
Третий запрос - возвращает приблизительное количество записей, но быстрее, чем первый запрос.
Точность третьего запроса ниже, чем у предыдущего, но для его выполнения не требуется актуальная статистика по таблице. Преимуществом данного подхода является возможность задавать условие выборки.
👍4🔥1
Разница между using и on в join-запросах
Join-запросы используются для объединения данных из нескольких таблиц в один результат. В MySQL для этого можно использовать конструкции using и on. Обе конструкции используются для указания условий объединения таблиц, но они имеют некоторые различия.
1 - Конструкция using используется, когда объединение происходит по столбцу, имеющему одинаковое имя в обеих таблицах.
2 - Конструкция on используется, когда объединение происходит по каким-то другим условиям.
Конструкция using удобна в случаях, когда объединение происходит по столбцам с одинаковыми именами, а on - в случаях, когда объединение происходит по другим условиям.
Join-запросы используются для объединения данных из нескольких таблиц в один результат. В MySQL для этого можно использовать конструкции using и on. Обе конструкции используются для указания условий объединения таблиц, но они имеют некоторые различия.
1 - Конструкция using используется, когда объединение происходит по столбцу, имеющему одинаковое имя в обеих таблицах.
2 - Конструкция on используется, когда объединение происходит по каким-то другим условиям.
Конструкция using удобна в случаях, когда объединение происходит по столбцам с одинаковыми именами, а on - в случаях, когда объединение происходит по другим условиям.
👍7❤3
Все о команде COLLATE в SQL
Команда COLLATE в SQL используется для указания правил сортировки и сравнения символов при выполнении операций сравнения в запросах.
Существует несколько вариантов значений, которые можно использовать в команде COLLATE, включая:
- _CS - с учетом регистра
- _CI - без учета регистра
- _AS - с учетом локали (language sensitive)
- _AI - без учета локали (language insensitive)
Примеры:
- Cyrillic_General_CS_AS - с учетом регистра и локали для кириллицы
- Latin1_General_CI_AI - без учета регистра и локали для латиницы
Команда COLLATE в SQL используется для указания правил сортировки и сравнения символов при выполнении операций сравнения в запросах.
Существует несколько вариантов значений, которые можно использовать в команде COLLATE, включая:
- _CS - с учетом регистра
- _CI - без учета регистра
- _AS - с учетом локали (language sensitive)
- _AI - без учета локали (language insensitive)
Примеры:
- Cyrillic_General_CS_AS - с учетом регистра и локали для кириллицы
- Latin1_General_CI_AI - без учета регистра и локали для латиницы
👍5
Что покажет следующий запрос:
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