SQL Academy: всё о реляционных БД и SQL
По всем вопросам и коммерческим предложениям писать @LadanovNick Купить рекламу: https://telega.in/c/sqlacademyofficial Чат студентов SQL Academy https://t.me/sqlacademyorg
نمایش بیشتر📈 تحلیل کانال تلگرام SQL Academy: всё о реляционных БД и SQL
کانال SQL Academy: всё о реляционных БД и SQL (@sqlacademyofficial) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 11 363 مشترک است و جایگاه 10 917 را در دسته فناوری و برنامهها و رتبه 57 322 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 11 363 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 28 ژوئن, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر 180 و در ۲۴ ساعت گذشته برابر 9 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 17.77% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 11.66% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 2 020 بازدید دریافت میکند. در اولین روز معمولاً 1 325 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 16 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند sql, строка, индекс, auto_increment, created_at تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“По всем вопросам и коммерческим предложениям писать @LadanovNick
Купить рекламу: https://telega.in/c/sqlacademyofficial
Чат студентов SQL Academy
https://t.me/sqlacademyorg”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 29 ژوئن, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
SELECT DATE_FORMAT('2024-08-16', '%W, %M %d, %Y');
a) Возвращает дату в формате 16 августа 2024
b) Возвращает дату в формате 2024-08-16
c) Возвращает дату в формате Friday, August 16, 2024
d) Возвращает дату в формате 2024-16-08
Правильный ответ: c) Возвращает дату в формате Friday, August 16, 2024
Вопрос 2: Какой результат вернет следующий запрос, если текущая дата 2024-08-16?
SELECT DATEDIFF('2024-12-31', CURDATE());
a) 137
b) 100
c) 31
d) 365
Правильный ответ: a) 137
Вопрос 3: Какой результат вернет следующий запрос?
SELECT DATE_ADD('2024-02-28', INTERVAL 1 DAY);
a) 2024-02-29
b) 2024-03-01
c) 2024-03-02
d) Ошибка из-за неверной даты
Правильный ответ: b) 2024-03-01
Вопрос 4: Что произойдет, если выполнить следующий запрос?
SELECT TIMESTAMPDIFF(HOUR, '2024-08-16 08:00:00', '2024-08-16 20:00:00');
a) Вернет количество дней между двумя датами
b) Вернет количество секунд между двумя датами
c) Вернет количество часов между двумя датами
d) Вернет количество минут между двумя датами
Правильный ответ: c) Вернет количество часов между двумя датамиВывести список сотрудников, получающих заработную плату большую чем у непосредственного руководителяСсылка на подготовленную песочницу: https://sqlplayground.app/sandbox/669fd9c7fab0d08abff8ded8 Задача 2
Вывести список сотрудников, получающих максимальную заработную плату в своем отделеСсылка на подготовленную песочницу: https://sqlplayground.app/sandbox/669fdc57fab0d08abff8deef
SELECT employee_id, employee_name
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
В этом примере подзапрос вычисляет среднюю зарплату, и основной запрос возвращает сотрудников с зарплатой выше среднего.
🔹 Подзапрос в FROM
SELECT department_id, COUNT(*)
FROM (SELECT department_id, employee_id FROM employees WHERE salary > 50000) high_earners
GROUP BY department_id;
Этот подзапрос выбирает сотрудников с зарплатой выше 50000, а затем основной запрос подсчитывает их количество по отделам.
🔹Подзапрос в WHERE
SELECT employee_id, employee_name
FROM employees
WHERE department_id IN (SELECT department_id FROM departments WHERE location = 'New York');
Здесь подзапрос выбирает отделы в Нью-Йорке, а основной запрос возвращает сотрудников этих отделов.
Подзапросы позволяют создавать динамичные и гибкие SQL-запросы, упрощая работу с комплексными данными. Попробуйте использовать их в своих проектах для повышения эффективности и точности ваших запросов! ⚡️
SELECT IF(age > 18, 'adult', 'minor') FROM users;
🔹 CASE
Оператор CASE в MySQL используется для выполнения множественных условий. Это похоже на использование нескольких операторов IF в других языках программирования.
Пример:
SELECT name,
CASE
WHEN score >= 90 THEN 'excellent'
WHEN score >= 80 THEN 'good'
WHEN score >= 70 THEN 'average'
LSE 'poor'
END as performance
FROM students;
Этот запрос классифицирует студентов по их производительности на основе баллов.
🔹 COALESCE
Функция COALESCE() возвращает первый ненулевой из своих аргументов 🌟.
Пример:
SELECT COALESCE(address, email, 'no contact') FROM contacts;
Здесь запрос вернет адрес контакта, если он не NULL; если адрес NULL, будет проверен email, и если он тоже NULL, вернется строка 'no contact'.
🔹 NULLIF
Функция NULLIF() возвращает NULL, если два аргумента равны. Если они не равны, возвращается первый аргумент.
Пример:
SELECT NULLIF(score, 0) FROM results;
Этот запрос вернет NULL для всех результатов, где score равен 0, предотвращая деление на ноль в расчетах.
Заключение
Условные выражения в MySQL значительно упрощают обработку данных, позволяя реализовать сложные логические проверки и принятие решений прямо в процессе запроса к базе данных. Они делают SQL-запросы более мощными и гибкими, позволяя программистам создавать более эффективные и оптимизированные решения для обработки данных.
-- Найти ID отдела с максимальной суммарной зарплатой сотрудников
Условие задачи и схему можно посмотреть тут:
https://sqlplayground.tech/sandbox/665f1dfc336e7166b572f64c
Для участия необходимо:
1) Перейти по ссылке sql песочницы
https://sqlplayground.tech/sandbox/665f1dfc336e7166b572f64c
2) Сделать fork (копию этой песочницы)
3) В блоке Query SQL написать ваше решение
4) Не забыть сохранить песочницу перед отправкой
5) Оставить в комментариях под постом ссылку на вашу песочницу с решением
Первый кто ее успешно решит - получит заслуженную награду 🎁
-- Создаем временную таблицу
CREATE TEMPORARY TABLE TempSales AS
SELECT ProductID, RegionID, SUM(Sales) as TotalSales
FROM SalesRecords
WHERE SaleDate BETWEEN '2023-01-01' AND '2023-01-31'
GROUP BY ProductID, RegionID;
-- Используем временную таблицу для более сложного запроса
SELECT p.ProductName, r.RegionName, t.TotalSales
FROM TempSales t
JOIN Products p ON t.ProductID = p.ProductID
JOIN Regions r ON t.RegionID = r.RegionID
ORDER BY t.TotalSales DESC;
В этом примере мы создаем временную таблицу TempSales, чтобы хранить результаты агрегации по продуктам и регионам за январь 2023 года. Затем мы присоединяем таблицы Products и Regions для получения названий продуктов и регионов, сортируя результаты по убыванию объема продаж.
Когда стоит использовать временные таблицы:
1️⃣ Когда вы работаете с большими объемами данных. 📊
2️⃣ Когда в запросах многократно используются одни и те же подсчеты или агрегации
3️⃣ Когда нужно разделить сложный запрос на управляемые части.
CREATE TRIGGER before_user_update
BEFORE UPDATE ON users
FOR EACH ROW
SET NEW.last_updated = NOW();
Удаление триггера ❌
Удалить триггер можно с помощью команды DROP TRIGGER. Например:
DROP TRIGGER before_user_update;
Полезный пример использования ℹ️
Предположим, в базе данных есть таблица orders с полями id, total и updated_at. Можно создать триггер, который будет обновлять updated_at каждый раз, когда меняется сумма заказа (total):
CREATE TRIGGER update_order_timestamp
BEFORE UPDATE ON orders
FOR EACH ROW
WHEN (OLD.total <> NEW.total)
BEGIN
SET NEW.updated_at = CURRENT_TIMESTAMP;
END;
Этот триггер помогает отслеживать момент последнего изменения суммы заказа, что может быть полезно для аудита изменений или для обновления связанных систем, например, систем бухгалтерского учета.
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
