Больше об CTE по ссылке
https://sql-academy.org/ru/guide/operator-with
https://sql-academy.org/ru/guide/operator-with
❤15👍7🔥3
SQL Academy: всё о реляционных БД и SQL
This media is not supported in the widget
VIEW IN TELEGRAM
❤11👍5👏2
🚀 Вопросы с собеседования на позицию intern аналитика в Тинькофф: разбор SQL 🚀
Сегодня мы разберем некоторые интересные вопросы по SQL, которые могут встретиться на собеседовании в Тинькофф.📊 🔍
1️⃣ Может ли измениться результат запроса, если в LEFT JOIN поменять местами таблицы ?
Да, если поменять местами таблицы в LEFT JOIN, результат запроса кардинально изменится. Все потому, что LEFT JOIN берет все строки из "левой" таблицы, дополняя их данными из "правой". Смена местами меняет логику: теперь "правая" становится "левой" и наоборот. Это влияет на то, какие строки и как будут включены в результат. 🔄
2️⃣ 5 + NULL это сколько?
В SQL, когда вы выполняете арифметическую операцию с NULL, результатом всегда будет NULL. Это связано с тем, что NULL представляет собой неопределенное значение, и любая операция с неопределенным значением также является неопределенной. Таким образом, 5 + NULL будет равно NULL.
3️⃣ Какие функции умеют возвращать значения из предыдущих/последующих строк для заданной строки таблицы ?
В SQL, чтобы работать с данными из строк до и после текущей, используются оконные функции. Эти функции обеспечивают доступ к значениям предыдущих/последующих строк:
ℹ️ LEAD(): Получает данные из строки после текущей, позволяя смотреть вперед на заданное количество строк.
ℹ️ LAG(): Доступ к данным из строки перед текущей, предоставляя возможность анализировать предыдущие значения.
ℹ️ FIRST_VALUE() и LAST_VALUE(): Возвращают первое и последнее значение в наборе строк соответственно, идеально для сравнения текущих значений с крайними в диапазоне.
ℹ️ NTH_VALUE(): Дает значение из конкретной позиции в окне, полезно для нахождения конкретных точек данных в последовательности.
Для тех, кто хочет углубиться в тему оконных функций:
https://sql-academy.org/ru/guide/windows-functions
#задание_из_собеседования #tinkoff #intern #analytic
Сегодня мы разберем некоторые интересные вопросы по SQL, которые могут встретиться на собеседовании в Тинькофф.
1️⃣ Может ли измениться результат запроса, если в LEFT JOIN поменять местами таблицы ?
Да, если поменять местами таблицы в LEFT JOIN, результат запроса кардинально изменится. Все потому, что LEFT JOIN берет все строки из "левой" таблицы, дополняя их данными из "правой". Смена местами меняет логику: теперь "правая" становится "левой" и наоборот. Это влияет на то, какие строки и как будут включены в результат. 🔄
2️⃣ 5 + NULL это сколько?
В SQL, когда вы выполняете арифметическую операцию с NULL, результатом всегда будет NULL. Это связано с тем, что NULL представляет собой неопределенное значение, и любая операция с неопределенным значением также является неопределенной. Таким образом, 5 + NULL будет равно NULL.
3️⃣ Какие функции умеют возвращать значения из предыдущих/последующих строк для заданной строки таблицы ?
В SQL, чтобы работать с данными из строк до и после текущей, используются оконные функции. Эти функции обеспечивают доступ к значениям предыдущих/последующих строк:
Для тех, кто хочет углубиться в тему оконных функций:
https://sql-academy.org/ru/guide/windows-functions
#задание_из_собеседования #tinkoff #intern #analytic
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍11 8🆒3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍44❤4🙏1
🚀 Внимание, обновление в разделе «Тренажер»! 🌟
Теперь у нас есть уникальная коллекция заданий прямиком из реальных собеседований по SQL от ведущих компаний!💼
Если вы недавно сталкивались с интересными задачами на собеседованиях или тестовых заданиях по SQL, поделитесь ими с нами по адресу feedback@sql-academy.org. Давайте вместе сделаем нашу базу заданий еще лучше и полезнее для всех!🤝 💡
Вместе мы создадим мощный инструмент для подготовки и успеха в будущих собеседованиях!✨
Теперь у нас есть уникальная коллекция заданий прямиком из реальных собеседований по SQL от ведущих компаний!
Если вы недавно сталкивались с интересными задачами на собеседованиях или тестовых заданиях по SQL, поделитесь ими с нами по адресу feedback@sql-academy.org. Давайте вместе сделаем нашу базу заданий еще лучше и полезнее для всех!
Вместе мы создадим мощный инструмент для подготовки и успеха в будущих собеседованиях!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27🔥12❤6😎3
🚀 Вопросы с собеседования на позицию intern аналитика в Тинькофф: разбор SQL (часть 2) 🚀
Сегодня мы разберем некоторые интересные вопросы по SQL, которые могут встретиться на собеседовании в Тинькофф.📊 🔍
1️⃣ Можно ли делать JOIN таблицы саму на себя?🤔
Абсолютно! Это называется self-join и полезно для работы с иерархическими данными или для сравнения строк в таблице. Вот пример запроса:
Здесь мы используем одну и ту же таблицу employees для поиска имени сотрудника и его менеджера. Псевдонимы a и b помогают нам различать два использования таблицы.
2️⃣ Какой из операторов: SELECT, FROM, WHERE, GROUP BY - выполняется последним?🧐
И тут главный герой - SELECT! 🌟 Хотя он стоит на первом месте по синтаксису, логически данные выбираются после всех фильтраций и группировок. Так что, порядок такой:
1. FROM ➡️ 2. WHERE ➡️ 3. GROUP BY ➡️ 4. SELECT.
3️⃣ Минимальное и максимальное количество записей в FULL JOIN таблицы на 10 и 100 строк?📊
С FULL JOIN всё интересно:
ℹ️ Минимум? 100 строк, если каждая из 10 нашла свою пару.
ℹ️ Максимум? 110 строк, если совпадений ноль и каждая строка появляется отдельно.
#задание_из_собеседования #tinkoff #intern #analytic
Сегодня мы разберем некоторые интересные вопросы по SQL, которые могут встретиться на собеседовании в Тинькофф.
1️⃣ Можно ли делать JOIN таблицы саму на себя?
Абсолютно! Это называется self-join и полезно для работы с иерархическими данными или для сравнения строк в таблице. Вот пример запроса:
SELECT a.name AS EmployeeName, b.name AS ManagerName
FROM employees a
JOIN employees b ON a.manager_id = b.id;
Здесь мы используем одну и ту же таблицу employees для поиска имени сотрудника и его менеджера. Псевдонимы a и b помогают нам различать два использования таблицы.
2️⃣ Какой из операторов: SELECT, FROM, WHERE, GROUP BY - выполняется последним?
И тут главный герой - SELECT! 🌟 Хотя он стоит на первом месте по синтаксису, логически данные выбираются после всех фильтраций и группировок. Так что, порядок такой:
1. FROM ➡️ 2. WHERE ➡️ 3. GROUP BY ➡️ 4. SELECT.
3️⃣ Минимальное и максимальное количество записей в FULL JOIN таблицы на 10 и 100 строк?
С FULL JOIN всё интересно:
#задание_из_собеседования #tinkoff #intern #analytic
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥7❤6🤩3💯3
Мы продолжаем собирать коллекцию тестовых заданий по SQL от ведущих компаний, чтобы сделать вашу подготовку еще более эффективной и интересной!
Если в последнее время вы сталкивались с уникальными и вызывающими заданиями по SQL на собеседованиях или в тестовых заданиях, мы будем рады, если поделитесь ими с нами!📩 Отправляйте свои задания на feedback@sql-academy.org и помогите нам сделать нашу базу еще богаче и полезнее для всех, кто стремится развиваться и достигать новых высот в области SQL.
В знак благодарности за ваши усилия, в случае если ваш материал окажется особенно ценным, мы с удовольствием предоставим вам промокод на бесплатный доступ к премиуму на нашей платформе.🎁
Давайте вместе строить лучшее будущее для всех, кто интересуется SQL!
Если в последнее время вы сталкивались с уникальными и вызывающими заданиями по SQL на собеседованиях или в тестовых заданиях, мы будем рады, если поделитесь ими с нами!
В знак благодарности за ваши усилия, в случае если ваш материал окажется особенно ценным, мы с удовольствием предоставим вам промокод на бесплатный доступ к премиуму на нашей платформе.
Давайте вместе строить лучшее будущее для всех, кто интересуется SQL!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33❤17🎉8
Вы когда-нибудь задумывались, как правильно вычислить возраст человека в SQL?
🚫 Неправильный подход:
SELECT YEAR(NOW()) - YEAR('2003-07-03 14:10:26');
Проблема такого подхода в том, что он не учитывает был ли день рождения у данного человека в этом году или ещё нет. То есть, если на момент запроса уже наступило 3-е июля (07-03), то человек отпраздновал свой день рождения и ему уже 21 лет, иначе ему по-прежнему 20 года. Разница функций YEAR тут будет бесполезна — в обоих случаях она даст 21 лет.
SELECT FLOOR(DATEDIFF(NOW(), '2003-07-03 14:10:26') / 365);
Это лучше, но всё же не совсем точно из-за наличия високосных годов. 📆
✅ Правильный подход с TIMESTAMPDIFF:
TIMESTAMPDIFF(YEAR, '2003-07-03 14:10:26', NOW());
Используя функцию TIMESTAMPDIFF, мы получаем точную разницу в годах между двумя датами, учитывая все нюансы календаря! 🎯
Так что, когда дело доходит до вычисления возраста, доверяйте TIMESTAMPDIFF — и ваши расчёты будут точны как никогда! 🚀💡
Please open Telegram to view this post
VIEW IN TELEGRAM
👍50🔥14❤11🗿2🤯1😍1
SQL Academy: всё о реляционных БД и SQL pinned «Мы продолжаем собирать коллекцию тестовых заданий по SQL от ведущих компаний, чтобы сделать вашу подготовку еще более эффективной и интересной! Если в последнее время вы сталкивались с уникальными и вызывающими заданиями по SQL на собеседованиях или в тестовых…»
Транзакции в MySQL 🚀 - это способ гарантировать, что ваши данные остаются надежными и целостными. Давайте разберемся, как это работает на примерах.
Что такое транзакции?🤔
Транзакция - это группа операций с данными, которые либо полностью выполняются, либо нет. Они основаны на принципах ACID:
ℹ️ Атомарность (все или ничего)
ℹ️ Согласованность (данные остаются правильными)
ℹ️ Изоляция (операции не мешают друг другу)
ℹ️ Долговечность (результаты сохраняются после завершения)
Примеры использования 🛠
1. Перевод денег с одного счета на другой:
Здесь мы используем START TRANSACTION и COMMIT, чтобы гарантировать, что обе операции выполнены вместе.
2. Откат при ошибке:
ROLLBACK отменяет все изменения, если что-то пошло не так.
Заключение
Использование транзакций в MySQL помогает сохранять ваши данные в безопасности и целостности, гарантируя, что комплексные операции либо выполняются полностью, либо не оказывают влияния вовсе.
Что такое транзакции?
Транзакция - это группа операций с данными, которые либо полностью выполняются, либо нет. Они основаны на принципах ACID:
Примеры использования 🛠
1. Перевод денег с одного счета на другой:
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
Здесь мы используем START TRANSACTION и COMMIT, чтобы гарантировать, что обе операции выполнены вместе.
2. Откат при ошибке:
START TRANSACTION;
UPDATE accounts SET balance = balance - 1000 WHERE id = 1;
-- Если ошибка, отменяем всё
ROLLBACK;
ROLLBACK отменяет все изменения, если что-то пошло не так.
Заключение
Использование транзакций в MySQL помогает сохранять ваши данные в безопасности и целостности, гарантируя, что комплексные операции либо выполняются полностью, либо не оказывают влияния вовсе.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37🤩2😍2 2❤1⚡1👎1