Почему данный код выведет ошибку?
SELECT id, name, CONCAT ('EU:', city) AS city_m
FROM customers
WHERE city_m = 'EU:Oslo';
Код выдаст ошибку, так как в данном случае alias нельзя использовать в операторе WHERE.
Порядок выполнения упомянутого SELECT запроса следующий:
1. FROM
2. WHERE
3. SELECT
Соответственно при выполнении команды WHERE, alias, задаваемый в SELECT еще неизвестен.
Для PostgreSQL или MySQL данную проблему можно решить, например, следующим образом:
```WITH ct AS (
SELECT id, name, CONCAT ('EU:', city) AS city_m
FROM customers
)
SELECT ct.*
FROM ct
WHERE ct.city_m = 'EU:Oslo';
SELECT id, name, CONCAT ('EU:', city) AS city_m
FROM customers
WHERE city_m = 'EU:Oslo';
Код выдаст ошибку, так как в данном случае alias нельзя использовать в операторе WHERE.
Порядок выполнения упомянутого SELECT запроса следующий:
1. FROM
2. WHERE
3. SELECT
Соответственно при выполнении команды WHERE, alias, задаваемый в SELECT еще неизвестен.
Для PostgreSQL или MySQL данную проблему можно решить, например, следующим образом:
```WITH ct AS (
SELECT id, name, CONCAT ('EU:', city) AS city_m
FROM customers
)
SELECT ct.*
FROM ct
WHERE ct.city_m = 'EU:Oslo';
👍10❤1
#вопросы_с_собеседований
Имеет ли значение порядок колонок в составном индексе?
Да, порядок колонок в составном индексе имеет значение.
Рассмотрим пример:
У нас есть таблица orders с колонками order_id, customer_id, order_date, product_id и quantity. Нам необходимо создать составной индекс для ускорения поиска заказов по customer_id и order_date.
Мы можем создать два индекса:
1. Индекс по (customer_id, order_date)
2. Индекс по (order_date, customer_id)
В первом случае, запросы с условием WHERE customer_id = ? AND order_date = ? будут выполняться быстрее, так как эти колонки находятся в порядке, указанном в индексе.
Во втором случае, запросы с условием WHERE order_date = ? AND customer_id = ? будут выполняться медленнее, так как порядок колонок не соответствует порядку в индексе.
Таким образом, порядок колонок в составном индексе имеет значение и должен соответствовать порядку, в котором используются колонки в запросах.
Имеет ли значение порядок колонок в составном индексе?
Да, порядок колонок в составном индексе имеет значение.
Рассмотрим пример:
У нас есть таблица orders с колонками order_id, customer_id, order_date, product_id и quantity. Нам необходимо создать составной индекс для ускорения поиска заказов по customer_id и order_date.
Мы можем создать два индекса:
1. Индекс по (customer_id, order_date)
2. Индекс по (order_date, customer_id)
В первом случае, запросы с условием WHERE customer_id = ? AND order_date = ? будут выполняться быстрее, так как эти колонки находятся в порядке, указанном в индексе.
Во втором случае, запросы с условием WHERE order_date = ? AND customer_id = ? будут выполняться медленнее, так как порядок колонок не соответствует порядку в индексе.
Таким образом, порядок колонок в составном индексе имеет значение и должен соответствовать порядку, в котором используются колонки в запросах.
👍9🔥1😱1
Какой запрос PostgreSQL возвратит ряд целых чисел от 5 до 10 включительно.
Anonymous Quiz
15%
GENERATE numbers (5, 10);
17%
GENERATE series [5, 10];
27%
SELECT generate_int (5, 10);
14%
SELECT generate_series (5, 10);
8%
Ничего из перечисленного
19%
Посмотреть ответ
👍4🔥2
Пейджинг данных OFFSET…FECTCH
Пейджинг данных – это процесс разбиения большого объема данных на меньшие части или страницы. Это может быть полезно при работе с большими таблицами, когда нужно извлечь данные только для определенной страницы.
Оператор OFFSET…FETCH был добавлен в SQL Server 2012 и позволяет выбирать данные с определенной позиции. Он имеет следующий синтаксис:
SELECT {columns}
FROM {table}
ORDER BY {column}
OFFSET {offset} ROWS
FETCH NEXT {fetch} ROWS ONLY
- {columns} – список столбцов для извлечения данных
- {table} – имя таблицы
- {column} – столбец для сортировки
- {offset} – количество строк для пропуска
- {fetch} – количество строк для выборки
Пейджинг данных – это процесс разбиения большого объема данных на меньшие части или страницы. Это может быть полезно при работе с большими таблицами, когда нужно извлечь данные только для определенной страницы.
Оператор OFFSET…FETCH был добавлен в SQL Server 2012 и позволяет выбирать данные с определенной позиции. Он имеет следующий синтаксис:
SELECT {columns}
FROM {table}
ORDER BY {column}
OFFSET {offset} ROWS
FETCH NEXT {fetch} ROWS ONLY
- {columns} – список столбцов для извлечения данных
- {table} – имя таблицы
- {column} – столбец для сортировки
- {offset} – количество строк для пропуска
- {fetch} – количество строк для выборки
👍4
С помощью какого ключевого слова отменяется транзакция?
Anonymous Quiz
5%
EXIT
17%
DECLINE
6%
RESET
64%
ROLLBACK
8%
Узнать ответ
👍8
Стоимостной подход в SQL
Стоимостной подход - это один из методов оптимизации запросов в SQL. Он основывается на том, что оптимальный план запроса может быть выбран путем оценки стоимости каждого возможного плана и выбора того, который имеет наименьшую стоимость.
Для выполнения данного запроса в SQL сервере может быть несколько возможных планов, например:
1. Сначала выполнить выборку из таблицы customers, затем из orders. Далее объединить результаты с помощью оператора JOIN по customer_id.
2. Сначала выполнить выборку из таблицы orders, затем из customers. Далее объединить результаты с помощью оператора JOIN по customer_id.
3. Использовать индексы на таблицах для выполнения быстрой выборки.
Для выбора наилучшего плана выполнения запроса SQL-сервер оценивает стоимость каждого плана, исходя из статистики таблиц, наличия индексов и других факторов.
Например, если таблица customers содержит много строк и немного соответствующих строк в таблице orders, то выборка из таблицы customers должна быть выполнена первой, чтобы уменьшить количество строк, которые нужно объединять с таблицей orders. Таким образом, стоимостной подход позволяет выбирать наиболее эффективный план выполнения запроса, что ускоряет работу SQL-сервера и сокращает время выполнения запросов.
Стоимостной подход - это один из методов оптимизации запросов в SQL. Он основывается на том, что оптимальный план запроса может быть выбран путем оценки стоимости каждого возможного плана и выбора того, который имеет наименьшую стоимость.
Для выполнения данного запроса в SQL сервере может быть несколько возможных планов, например:
1. Сначала выполнить выборку из таблицы customers, затем из orders. Далее объединить результаты с помощью оператора JOIN по customer_id.
2. Сначала выполнить выборку из таблицы orders, затем из customers. Далее объединить результаты с помощью оператора JOIN по customer_id.
3. Использовать индексы на таблицах для выполнения быстрой выборки.
Для выбора наилучшего плана выполнения запроса SQL-сервер оценивает стоимость каждого плана, исходя из статистики таблиц, наличия индексов и других факторов.
Например, если таблица customers содержит много строк и немного соответствующих строк в таблице orders, то выборка из таблицы customers должна быть выполнена первой, чтобы уменьшить количество строк, которые нужно объединять с таблицей orders. Таким образом, стоимостной подход позволяет выбирать наиболее эффективный план выполнения запроса, что ускоряет работу SQL-сервера и сокращает время выполнения запросов.
👍8❤1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤4
#вопросы_с_собеседований
SQL-запрос для поиска n-й по величине зарплаты/платежа или 3-й по величине зарплаты/платежа
Чтобы найти n-ую самую высокую зарплату, вы можете использовать подзапрос с функцией DENSE_RANK() для вычисления ранга каждой зарплаты, а затем отфильтровать результаты, чтобы включить только строку с рейтингом, равным n.
Вы также можете использовать условия LIMIT и OFFSET , чтобы найти n-ую самую высокую зарплату.
SQL-запрос для поиска n-й по величине зарплаты/платежа или 3-й по величине зарплаты/платежа
Чтобы найти n-ую самую высокую зарплату, вы можете использовать подзапрос с функцией DENSE_RANK() для вычисления ранга каждой зарплаты, а затем отфильтровать результаты, чтобы включить только строку с рейтингом, равным n.
Вы также можете использовать условия LIMIT и OFFSET , чтобы найти n-ую самую высокую зарплату.
👍6🔥2
Функция WEEK в MySQL
Функция WEEK используется для извлечения номера недели из даты.
Базовый синтаксис функции выглядит следующим образом:
WEEK( date_value, [ mode ] )
- date_value - значение даты или даты/времени, из которого извлекается неделя.
- mode - Необязательный. Он используется для указания дня недели. Это может быть один из следующих вариантов:
Примечание:
1. Функция WEEK возвращает значение от 0 до 53 или от 1 до 53 в зависимости от указанного режима.
2. Если вы используете MySQL 4.0.14+, а режим не указан, функция WEEK будет использовать значение в системной переменной default_week_format в качестве режима.
3. Если вы используете версию MySQL, которая старше 4.0.14, а режим не указан, функция WEEK будет использовать 0 в качестве режима.
4. Функция WEEKOFYEAR возвращает то же самое, что и функция WEEK с синтаксисом WEEK (date_value, 3).
Функция WEEK используется для извлечения номера недели из даты.
Базовый синтаксис функции выглядит следующим образом:
WEEK( date_value, [ mode ] )
- date_value - значение даты или даты/времени, из которого извлекается неделя.
- mode - Необязательный. Он используется для указания дня недели. Это может быть один из следующих вариантов:
Примечание:
1. Функция WEEK возвращает значение от 0 до 53 или от 1 до 53 в зависимости от указанного режима.
2. Если вы используете MySQL 4.0.14+, а режим не указан, функция WEEK будет использовать значение в системной переменной default_week_format в качестве режима.
3. Если вы используете версию MySQL, которая старше 4.0.14, а режим не указан, функция WEEK будет использовать 0 в качестве режима.
4. Функция WEEKOFYEAR возвращает то же самое, что и функция WEEK с синтаксисом WEEK (date_value, 3).
👍4🔥2❤1
Возможно ли использование одновременно двух агрегирующих функций: select min(price), max(price) from Orders;
Anonymous Quiz
20%
да, но данный запрос составлен неверно, надо так: select * from Orders where price IN (min, max);
33%
да, в результате мы получим минимальную и максимальную стоимости 63%
12%
да, в результате мы получим стоимости, отсортированные от минимальной к максимальной
17%
нет, две функции использовать одновременно нельзя
18%
Посмотреть ответы
👍6😱6
Что будет найдено благодаря этому выражению: WHERE cust_contact LIKE '[JM]%'? Работает в Microsoft Access.
Anonymous Quiz
6%
один клиент, имя которого начинается на J или M
40%
все клиенты, имена которых начинаются на J или M
8%
один клиент, имя которого начинается на JM
46%
все клиенты, имена которых начинаются на JM
👍9
MySQL функция ENCRYPT
Функция ENCRYPT используется для шифрования переданной строки. Она использует алгоритм шифрования DES, который широко используется для защиты паролей в различных системах.
Функция ENCRYPT принимает два аргумента: первый аргумент - это строка, которую нужно зашифровать, а второй аргумент - это соль, которая добавляется к строке перед шифрованием.
Функция ENCRYPT используется для шифрования переданной строки. Она использует алгоритм шифрования DES, который широко используется для защиты паролей в различных системах.
Функция ENCRYPT принимает два аргумента: первый аргумент - это строка, которую нужно зашифровать, а второй аргумент - это соль, которая добавляется к строке перед шифрованием.
👍5🔥1
Сколько PRIMARY KEY можно создать для таблицы?
Anonymous Quiz
73%
1
3%
2
2%
24
22%
Неограниченное количество
👍10