SQL и Базы Данных
Відкрити в Telegram
Задачи по базам данных и SQL Основы языка SQL, задачи и решения к ним. Админ: @anothertechrock
Показати більше3 680
Підписники
-124 години
-77 днів
-1330 днів
Архів дописів
3 680
Трюк дня. Простые числа. Решение.
Простое число - натуральное (целое положительное) число, имеющее ровно два различных натуральных делителя — единицу и самого себя.
Для начала создадим набор чисел от 2 до 1000 с помощью функции
generate_series.
Затем с помощью NOT EXISTS (которое можно, модифицировав, заменить на JOIN) мы соединяем таблицу саму на себя и затем выбираем только те значения, для которых ни одно деление на меньшее число не дает остаток 0.
WITH x AS (
SELECT * FROM generate_series( 2, 1000 ) x
)
SELECT x.x
FROM x
WHERE NOT EXISTS (
SELECT 1 FROM x y
WHERE x.x > y.x AND x.x % y.x = 0
);
#tips3 680
Трюк дня. Простые числа
Напишите PostgreSQL-запрос, который возвратит простые числа от 2 до 1000.
Решение будет вечером.
#tips
3 680
Как обрабатывать сырые данные и создавать понятные дашборды?
Пройдите тест из 11 вопросов и проверьте свои навыки в аналитике данных, а также получите спец. цену на курс "Аналитик данных" от OTUS.
В результате курса вы овладеете необходимыми инструментами, чтобы получить старт в новой профессии или существенно снизить количество ежедневной рутины на текущей работе.
ПРОЙТИ ТЕСТИРОВАНИЕ:
https://otus.pw/toOu
Нативная интеграция. Информация о продукте www.otus.ru3 680
Стать сотрудником Яндекса быстрее и проще, чем кажется. Участвуйте в днях быстрого найма: решите тестовое, пройдите несколько секций собеседования и получите офер за несколько дней.
Ближайшее мероприятие:
• 22-23 июля — Fast Track для Oracle-разработчиков, с опытом работы на PL/SQL или тех, кто готов перейти. Офер за 2 дня в команду HR Tech.
Зарегистрироваться
3 680
Трюк дня. Получить список аккаунтов в MySQL с помощью запроса
Используйте код:
SELECT User FROM mysql.user;
Результат будет следующего вида :
+------+
| User |
+------+
| root |
+------+
| user2 |
+------+
#tips
А как можно получить список аккаунтов в других СУБД?3 680
❓Хотите перейти на новый уровень в C# разработке?
👉 Приглашаем 12 июля в 20:00 мск вас на открытый урок в OTUS.
Тема: Примитивы многопоточности .Net
На уроке разберем такие примитивы многопоточности, как
— Барьеры;
— Условные события (ManualResetEvent/AutoResetEvent);
— Потоко-безопасные очереди (блокируемые и неблокируемые)
Дополнительно обсудим:
— Как писать код без Thread.Sleep
— Где еще можно использовать многопоточность
— Чем отличается многопоточный код от асинхронного.
📌 Вебинар пройдет в рамках онлайн-курса «C# Developer. Professional» и позволит вам углубить свои знания о платформе .NET и научиться решать сложные задачи языка C#.
Не упустите шанс протестировать курс и стать еще более компетентным C# разработчиком. Больше полезных тем ждет вас на курсе, доступном в рассрочку.
👉 Для участия во встрече пройдите вступительный тест https://otus.pw/Tdnf/
Нативная интеграция информация о продукте www.otus.ru
3 680
Выберите пример правильно составленного запроса с использованием агрегирующей функции SUM:
3 680
🔥 Тест для разработчиков, тимлидов и архитекторов!🔥
Ответьте на 11 вопросов и узнайте, достаточно ли у вас знаний, чтобы пройти онлайн-курс «Software Architect» в OTUS.
Курс поможет прокачать весь арсенал навыков, необходимых архитектору ПО.
👉 ПРОЙТИ ТЕСТ https://otus.pw/8d2p/
💣 Пройдете тест и получите:
✔️ Живое общение с экспертами-практиками
✔️ Лучшие открытые уроки прошлых наборов курса
✔️ Продвинутые темы и практика на «боевых» задачах уровня Middle+
✔️ Скидку на прохождение онлайн курса «Software Architect».
Курс доступен в рассрочку.
Нативная интеграция. Информация о продукте www.otus.ru
3 680
Трюк дня. Ранг без RANK(). Решение.
Соединим таблицу саму на себя, сравнивая
score.
Подсчитаем все уникальные значения объединённых score. Это и даёт эквивалент DENSE_RANK().
SELECT s1.score, count(DISTINCT s2.score) AS score_rank
FROM scores s1
JOIN scores s2
ON s1.score <= s2.score
GROUP BY s1.id, s1.score
ORDER BY 1 DESC
#tips3 680
Трюк дня. Ранг без
RANK()
Напишите SQL-запрос, который будет ранжировать scores из таблицы scores без использования оконной функции. Одинаковые scores должны иметь одинаковый ранг. Ранг, следующий за одинаковыми scores, должен быть следущий целым числом (см. ожидаемый результат на картинке выше).
Решение будет завтра.
#tips3 680
🔥 Observability — важный аспект в мире разработки и эксплуатации систем. Начните осваивать инструменты наблюдаемости с Grafana.
📢📢 Приходите 20 июня 20:00 мск на открытый урок «Grafana — основной инструмент визуализациии данных».
Вебинар приурочен к старту онлайн-курса «Observability: мониторинг, логирование, трейсинг» в OTUS.
Вместе с Евгением Непомнящим, разработчиком в IT-Sense, мы:
▫️ Рассмотрим построение графиков из различных источников данных при помощи Grafana.
▫️ Поговорим про историю проекта, использование различных источников, формирование и версионирование собственных дашбордов.
▫️ Затронем добавление Data Source, работу с данными через Explore, импорт готовых дашбордов, обзор элементов существующего дашборда и создание дашборда.
После вебинара вы сможете приобрести полный курс в рассрочку.
👉 Чтобы записаться на занятие, пройдите вступительное тестирование. https://otus.pw/Rcdjy/
Нативная интеграция. Информация о продукте www.otus.ru
3 680
Подзапросы в SQL
В этом видеоуроке автор подробно рассматривает работу с подзапросами в SQL. Вы разберете синтаксис подзапросов и узнаете как их использовать.
0:00 Вступление
0:15 Подзапросы
2:13 Значение подзапросов
4:12 Предикаты с подзапросами
4:26 Использование агрегатных функций
5:49 Оператор IN
8:10 Одиночные столбцы
8:35 Выражение
8:58 Предложение HAVING
9:17 Итог
Смотреть это видео на youtube: youtu.be/pIFiw2IjFHE
3 680
Чем больший объем данных используют на проекте, чем выше нагрузка на систему – тем более продвинутый SQL нужен разработчикам. Изучить SQL и свободно использовать его в работе поможет курс Практикума.
После 3 месяцев курса разработчики смогут:
— уверенно пользоваться простыми селектами, джоинами, индексами и оконными функциями;
— отладить запрос, который сгенерирован через ORM;
— составить сложные запросы на нативном SQL;
— применить продвинутый SQL, чтобы писать код для высоконагруженных систем,
— чувствовать себя спокойно на собеседованиях.
Записывайтесь и растите в карьере.
Реклама АНО ДПО "Образовательные технологии Яндекса", ИНН:7704282033, erid:LjN8KD49u
3 680
С помощью какого update-запроса можно обновить значения более чем одной колонки?
3 680
👉Присоединяйтесь к нашему сообществу Data Analyst REBRAIN, если вы интересуетесь аналитикой данных, управлением проектами или маркетингом.
У нас для вас есть множество открытых онлайн-практикумов каждый месяц, которые проводят профессиональные аналитики. В рамках практикумов мы разбираем реальные кейсы анализа данных с использованием самых актуальных инструментов, таких как Python, SQL, Tableau, бизнес-метрики и визуализация данных, статистика, теория вероятностей и другие.
Уровень сложности и направление каждого практикума подобраны таким образом, чтобы каждый мог найти для себя интересные задачи и развиваться в соответствии с уровнем своей компетенции.
✔️ Подключайтесь к нам уже сегодня и начинайте развивать свои навыки в области анализа данных совершенно бесплатно!
3 680
Трюк дня. Сравнение с предыдущим. Решение.
Решение: использование
DATEDIFF
DATEDIFF: эта функция вычисляет разницу между двумя датами. Она используется для того, чтобы обеспечить сравнение именно «сегодняшних» и «вчерашних» температур.
Если сформулировать обычным языком следующий запрос, то окажется, что он выражает следующую идею: нужно выбрать такие идентификаторы, чтобы температура, соответствующая представляемым ими датам, была бы больше, чем температура на «вчерашние» по отношению к ним даты.
SELECT DISTINCT a.Id FROM Weather a, Weather b WHERE a.Temperature > b.Temperature AND DATEDIFF(a.Recorddate, b.Recorddate) = 1#tips
3 680
Трюк дня. Сравнение с предыдущим
Напишите SQL-запрос, который находит в таблице
weather все даты (идентификаторы дат), когда температура была бы выше температуры на предшествующие им даты. То есть, нас интересуют даты, в которые «сегодняшняя» температура выше «вчерашней».
Решение будет завтра.
#tips3 680
💻 Умение работать с любой базой данных — ценный и востребованный навык администраторов и разработчиков. Освоить его можно с помощью онлайн-курса «Базы данных» от OTUS.
📌 Хардкорный тест по Базам данных — https://otus.pw/U84X/
⚠️ За полгода живых вебинаров вы научитесь работать с основными СУБД, которые могут вам пригодиться: PostgreSQL, MySQL, Redis, MongoDB, Cassandra и сможете оптимизировать медленные запросы.
РЕЗУЛЬТАТ ОБУЧЕНИЯ
Собственный SQL-проект, который усилит ваше портфолио и поможет получить выгодный оффер.
👉 ПРОЙДИТЕ ТЕСТ — сможете занять место в группе по спец.цене
https://otus.pw/U84X/
Нативная интеграция. Информация о продукте www.otus.ru3 680
Трюк дня. Найти второе место по зарплате. Решение.
Решение 1: использование
IFNULL и OFFSET
• IFNULL(expression, alt): эта функция возвращает аргумент expression в случае, если он не равен null. В противном случае возвращается аргумент alt. Мы используем эту функцию чтобы возвратить null, если в таблице не окажется искомого значения.
• OFFSET: этот оператор используется с ORDER BY для того чтобы отбросить первые n строк. Используется для получения второго по величине значения.
SELECT
IFNULL(
(SELECT DISTINCT salary
FROM employee
ORDER BY salary DESC
LIMIT 1
OFFSET 1
), null) AS sec_salary
FROM employee
LIMIT 1
Решение 2: использование MAX
Здесь выбирается самое большое значение зарплаты, не равное максимальной зарплате, полученной по всей таблице. В результате мы и получаем то, что нужно — вторую по величине зарплату.
SELECT
MAX(salary) AS sec_salary
FROM Employee
WHERE salary != (SELECT MAX(salary) FROM employee)
#tips