Округление на языке запросов Google

#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