SQL Academy: всё о реляционных БД и SQL
По всем вопросам и коммерческим предложениям писать @LadanovNick Купить рекламу: https://telega.in/c/sqlacademyofficial Чат студентов SQL Academy https://t.me/sqlacademyorg
Ko'proq ko'rsatish📈 Telegram kanali SQL Academy: всё о реляционных БД и SQL analitikasi
SQL Academy: всё о реляционных БД и SQL (@sqlacademyofficial) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 11 365 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 10 911-o'rinni va Rossiya mintaqasida 57 339-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 11 365 obunachiga ega bo‘ldi.
28 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni 180 ga, so‘nggi 24 soatda esa 9 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 17.77% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 11.66% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 2 020 marta ko‘riladi; birinchi sutkada odatda 1 325 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 16 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent sql, строка, индекс, auto_increment, created_at kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“По всем вопросам и коммерческим предложениям писать @LadanovNick
Купить рекламу: https://telega.in/c/sqlacademyofficial
Чат студентов SQL Academy
https://t.me/sqlacademyorg”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 29 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
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;
Этот триггер помогает отслеживать момент последнего изменения суммы заказа, что может быть полезно для аудита изменений или для обновления связанных систем, например, систем бухгалтерского учета.
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
