#gql #scalar
#gql #скалярный
Вопрос:
Я хотел бы реализовать серию запросов с округлением на языке запросов Google, таких как:
select round(age,-1), count(id) group by round(age,-1)
или любая комбинация int / floor / etc.
select int(age/10)*10, count(id) group by int(age/10)*10
Есть ли какой-либо способ сделать это? Я подозреваю, что нет, поскольку список скалярных функций в GQL очень ограничен, но интересно, есть ли обходной путь.
http://code.google.com/apis/chart/interactive/docs/querylanguage.html#scalar_functions
Ответ №1:
Нет, я не думаю, что мы можем выполнить округление в GQL…
Ссылка, которую вы показали, не предназначена для Google App engine…
Ответ №2:
Добавьте формат в конце запроса, например:
"select age format age '0'"
Смотрите Справочный формат языка запросов Google.
Ответ №3:
Хотя нет явных функций round или floor, их можно реализовать, используя оператор modulus %
и тот факт, что value % 1
возвращает десятичную часть value
. Так value - value % 1
эквивалентно floor(value)
, по крайней мере, для положительных значений. В более общем плане value - value % k
должно быть эквивалентно floor(value / k) * k
.
В вашем случае ваш запрос должен выглядеть следующим образом:
select age - age % 10, count(id) group by age - age % 10