Псевдонимы требуются при присоединении к таблицам со столбцами, которые имеют идентичные имена.
До версии 3 оператор деления Python, /, вел себя как оператор деления C, когда он представлен с двумя целочисленными аргументами: он возвращает целочисленный результат, который сокращается, когда должна быть дробная часть. См .: PEP 238
>>> n = 29
>>> d = 1009
>>> print str(float(n)/d)
0.0287413280476
В Python 2 (и, возможно, ранее) вы могли использовать:
>>> from __future__ import division
>>> n/d
0.028741328047571853
В Python 2.x деление работает так же, как в C-подобном языки: если оба аргумента являются целыми числами, результат обрезается до целого числа, поэтому 29/1009 равно 0. 0, поскольку число с плавающей запятой равно 0.0. Чтобы исправить это, приведите к типу числа с плавающей запятой перед делением:
print str(float(numerator)/denominator)
В Python 3.x деление действует более естественно, поэтому вы получите правильный математический результат (в пределах ошибки с плавающей запятой).
В своей оценке вы приводите результат, вместо этого вам нужно приводить операнды.