← К оглавлению занятия

✅ Решения

📁 Блок: SQL / MySQL / Практика функций ⏱️ Время изучения: ~90 мин 🎯 Сложность: Практикум

⚡ Кратко: ✅ решения

Практикум 11 закрепляет пользовательские функции MySQL на трёх расчётных задачах.

Нужно создать cm_to_inches, sphere_volume и degrees_to_radians.

Все три функции принимают числовой аргумент, возвращают DECIMAL и используют DETERMINISTIC.

Минимальный пример: SELECT cm_to_inches(10); должен вернуть значение в дюймах по формуле cm * 0.393701.

Топ-3 ошибки: потерять точность из-за INT, забыть POW(radius, 3), написать DELIMITER; без пробела и разделителя.

Решение 1. Сантиметры в дюймы

DELIMITER $$

CREATE FUNCTION cm_to_inches(cm DECIMAL(10,2))
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
    RETURN cm * 0.393701;
END$$

DELIMITER ;

Множитель берётся прямо из условия. Тип DECIMAL сохраняет дробную часть результата.

Решение 2. Объём шара

DELIMITER $$

CREATE FUNCTION sphere_volume(radius DECIMAL(10,2))
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
    RETURN (4 / 3) * PI() * POW(radius, 3);
END$$

DELIMITER ;

POW(radius, 3) отвечает за куб радиуса, а PI() берёт значение π из MySQL.

Решение 3. Градусы в радианы

DELIMITER $$

CREATE FUNCTION degrees_to_radians(degrees DECIMAL(10,2))
RETURNS DECIMAL(10,6)
DETERMINISTIC
BEGIN
    RETURN degrees * (PI() / 180);
END$$

DELIMITER ;

Для радиан оставлено 6 знаков после запятой, потому что результат часто дробный и маленькая потеря точности заметна.