Подзапрос: Здесь используется подзапрос для выбора CustomerID из таблицы Orders, группируя по CustomerID и применяя условие HAVING COUNT(OrderID) > 2. Это выбирает клиентов, сделавших более двух заказов.
Объединение (JOIN): Основной запрос использует JOIN для соединения таблиц Customers и результата подзапроса по CustomerID.
Условие WHERE: Фильтрация происходит по полю City в таблице Customers, чтобы выбрать только тех клиентов, которые находятся в "New York".
Этот запрос тестирует понимание кандидата в области объединения таблиц, работы с агрегатными функциями и подзапросами, а также фильтрации данных в SQL.
👍6❤5
Какое утверждение о DISTINCT верно?
Anonymous Quiz
43%
ключевое слово DISTINCT применяется ко всем столбцам, а не только перед которым стоит
13%
ключевое слово DISTINCT применяется ко всем столбцам, его указывают перед каждым столбцом
31%
ключевое слово DISTINCT применяется не ко всем столбцам
13%
нет правильного варианта
👍5
#Вопросы_с_собеседования
Расскажите алгоритм решения следующей задачи
Предположим, у вас есть две таблицы: Orders (Заказы) и Customers (Клиенты). Таблица Orders содержит колонки OrderID, CustomerID и OrderDate, а таблица Customers содержит CustomerID, Name и Country. Как бы вы нашли имена всех клиентов из США, которые не сделали ни одного заказа после 1 января 2022 года?
Для решения этой задачи можно использовать подзапросы или соединения таблиц. Один из подходов - использовать левое соединение (LEFT JOIN) между Customers и Orders, фильтруя заказы после указанной даты. Затем можно использовать WHERE условие, чтобы выбрать только тех клиентов, у которых нет соответствующих записей в Orders после этой даты и которые находятся в США. Это демонстрирует понимание соединений таблиц, фильтрации и работы с датами в SQL.
Расскажите алгоритм решения следующей задачи
Предположим, у вас есть две таблицы: Orders (Заказы) и Customers (Клиенты). Таблица Orders содержит колонки OrderID, CustomerID и OrderDate, а таблица Customers содержит CustomerID, Name и Country. Как бы вы нашли имена всех клиентов из США, которые не сделали ни одного заказа после 1 января 2022 года?
👍6❤1🔥1
DB Fiddle — онлайн-площадка для работы с базами данных SQL
Её можно использовать как своеобразную песочницу для тестирования, отладки и обмена фрагментами SQL. Есть поддержка разных версий MySQL, PostgreSQL и SQLite
Из интересного: к работе над базой можно подключить приятеля — делается это буквально в пару кликов
Её можно использовать как своеобразную песочницу для тестирования, отладки и обмена фрагментами SQL. Есть поддержка разных версий MySQL, PostgreSQL и SQLite
Из интересного: к работе над базой можно подключить приятеля — делается это буквально в пару кликов
👍5❤1
Использование CROSS JOIN для задач поиска пересечений в исторических данных
CROSS JOIN - это декартово произведение множеств, которое соединяет таблицы без условий. Его использование может помочь в решении сложных задач, таких как нахождение пересечений в исторических данных.
1. На примерах в изображении 1 представлена структура таблиц.
2. В изображении 2 показано, что заявка была неправильно распределена на сотрудника, из-за того, что у андеррайтера и клиента совпадают девичьи фамилии - результат
3. Для решения этой проблемы можно использовать простой запрос с CROSS JOIN, как показано в изображении 3 - результат
Полноценное продолжение - здесь
CROSS JOIN - это декартово произведение множеств, которое соединяет таблицы без условий. Его использование может помочь в решении сложных задач, таких как нахождение пересечений в исторических данных.
1. На примерах в изображении 1 представлена структура таблиц.
2. В изображении 2 показано, что заявка была неправильно распределена на сотрудника, из-за того, что у андеррайтера и клиента совпадают девичьи фамилии - результат
3. Для решения этой проблемы можно использовать простой запрос с CROSS JOIN, как показано в изображении 3 - результат
Полноценное продолжение - здесь
👍5
SQLGlot - это универсальный инструмент для работы с SQL.
Он может использоваться для форматирования SQL-запросов, а также для трансляции между 20 различными диалектами, включая DuckDB, Presto, Spark, Snowflake и BigQuery.
Более того, при помощи SQLGlot можно проводить оптимизацию SQL-запросов, что повышает их эффективность и быстродействие.
Он может использоваться для форматирования SQL-запросов, а также для трансляции между 20 различными диалектами, включая DuckDB, Presto, Spark, Snowflake и BigQuery.
Более того, при помощи SQLGlot можно проводить оптимизацию SQL-запросов, что повышает их эффективность и быстродействие.
👍4
#Вопросы_с_собеседования
Объясните разницу между INNER JOIN и LEFT JOIN в SQL и приведите пример ситуации, в которой каждый из них наиболее подходит
INNER JOIN в SQL возвращает строки, когда есть совпадение в обеих таблицах, в то время как LEFT JOIN возвращает все строки из левой таблицы и совпадающие строки из правой таблицы; строки, для которых нет совпадений в правой таблице, будут иметь NULL в этих столбцах. INNER JOIN подходит, когда необходимо найти точные совпадения между таблицами, тогда как LEFT JOIN используется, когда нужно включить все записи из одной таблицы, даже если соответствующих совпадений в другой таблице нет.
Объясните разницу между INNER JOIN и LEFT JOIN в SQL и приведите пример ситуации, в которой каждый из них наиболее подходит
👍18
Ультимативная дорожная карта для изучения SQL и баз данных в 2023 году + источники для знаний
Смотреть статью
Смотреть статью
Хабр
Ультимативная дорожная карта для изучения SQL и баз данных в 2023 году + источники для знаний
SQL является одним из наиболее важных языков для работы с данными в Сети. Без SQL мы не смогли бы обмениваться данными настолько уверенным и мощным способом, как мы это делаем сегодня. Независимо от...
👍7🔥2
#Вопросы_с_собеседования
Как SQL-запрос с использованием операторов JOIN может быть оптимизирован для ускорения выполнения, если одна из таблиц содержит миллионы записей, а другая – только несколько сотен? Опишите три различных подхода к оптимизации
Использование Индексов: Создание индексов на столбцах, участвующих в JOIN, может значительно ускорить процесс, особенно на столбцах большой таблицы. Если JOIN выполняется по столбцу, который является первичным ключом или имеет уникальный индекс, это обычно обеспечивает наилучшую производительность.
Оптимизация Порядка JOIN: Порядок, в котором таблицы соединяются в запросе, может влиять на производительность. Лучше начинать с таблицы с наименьшим количеством строк (в данном случае, таблицы с несколькими сотнями записей), что может уменьшить количество обрабатываемых данных на более ранней стадии выполнения запроса.
Использование Подзапросов или CTE (Common Table Expressions): В некоторых случаях, использование подзапросов или CTE для предварительной фильтрации данных перед выполнением JOIN может быть эффективным. Например, можно сначала выделить необходимые данные из меньшей таблицы с помощью подзапроса или CTE, а затем выполнить JOIN с большей таблицей. Это может сократить количество обрабатываемых данных и ускорить выполнение запроса.
Каждый из этих подходов может помочь в оптимизации запросов SQL, особенно когда речь идет о соединении таблиц с большим различием в размерах.
Как SQL-запрос с использованием операторов JOIN может быть оптимизирован для ускорения выполнения, если одна из таблиц содержит миллионы записей, а другая – только несколько сотен? Опишите три различных подхода к оптимизации
Использование Индексов: Создание индексов на столбцах, участвующих в JOIN, может значительно ускорить процесс, особенно на столбцах большой таблицы. Если JOIN выполняется по столбцу, который является первичным ключом или имеет уникальный индекс, это обычно обеспечивает наилучшую производительность.
Оптимизация Порядка JOIN: Порядок, в котором таблицы соединяются в запросе, может влиять на производительность. Лучше начинать с таблицы с наименьшим количеством строк (в данном случае, таблицы с несколькими сотнями записей), что может уменьшить количество обрабатываемых данных на более ранней стадии выполнения запроса.
Использование Подзапросов или CTE (Common Table Expressions): В некоторых случаях, использование подзапросов или CTE для предварительной фильтрации данных перед выполнением JOIN может быть эффективным. Например, можно сначала выделить необходимые данные из меньшей таблицы с помощью подзапроса или CTE, а затем выполнить JOIN с большей таблицей. Это может сократить количество обрабатываемых данных и ускорить выполнение запроса.
Каждый из этих подходов может помочь в оптимизации запросов SQL, особенно когда речь идет о соединении таблиц с большим различием в размерах.
👍16❤1
#Вопросы_с_собеседования
Как в SQL можно определить и устранить "фантомное чтение" в транзакциях и какие уровни изоляции транзакций необходимо учитывать для предотвращения этого явления?
"Фантомное чтение" в SQL - это ситуация, когда транзакция читает набор строк дважды и получает разные результаты из-за изменений, внесенных другими транзакциями. Для устранения фантомного чтения можно использовать уровни изоляции транзакций, такие как SERIALIZABLE, который предотвращает фантомное чтение, обеспечивая полную изоляцию транзакции. Однако использование высоких уровней изоляции может снизить производительность из-за увеличения блокировок и ожидания.
Как в SQL можно определить и устранить "фантомное чтение" в транзакциях и какие уровни изоляции транзакций необходимо учитывать для предотвращения этого явления?
👍4🔥2