✅ Решения
⚡ Кратко: ✅ решения
Практикум 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 знаков после запятой, потому что результат часто дробный и маленькая потеря точности заметна.