Справочник по языку запросов (версия 0.7)

Язык запросов Google Visualization API позволяет выполнять различные манипуляции с данными с запросом к источнику данных.

Оглавление

Введение

Как правило, визуализации ожидают данные в определенной форме. Например, круговая диаграмма может ожидать данных в виде двух столбцов: текстовой метки и числового значения. Данные в источнике данных могут не точно соответствовать этой структуре. Например, источник данных может иметь более двух столбцов, или порядок столбцов может не соответствовать порядку, ожидаемому на круговой диаграмме.

Язык запросов позволяет отправлять запросы на манипулирование данными и форматирование в источник данных, а также обеспечивать соответствие возвращаемой структуры данных и содержимого ожидаемой структуре.

Синтаксис языка запросов аналогичен SQL. Разработчики, знакомые с SQL, должны быть в состоянии быстро изучить и использовать этот язык запросов. В Интернете доступно множество учебных пособий по SQL . Существуют некоторые различия между этим языком запросов и SQL, которые описаны в разделе о синтаксисе .

Обратите внимание, что источники данных не требуются для реализации языка запросов, а если и требуются, то для реализации всех функций языка. Если у вас нет оснований полагать иначе, вы не должны полагаться на источник данных для реализации всех функций этого языка.

Использование языка запросов

Вы можете прикрепить строку запроса к запросу источника данных двумя способами: задав строку запроса из кода JavaScript или задав строку запроса в качестве параметра в URL-адресе источника данных . Если ваш запрос не включает строку запроса, поведение источника данных по умолчанию заключается в возврате всех строк и столбцов с использованием стандартного порядка строк и столбцов и форматирования. Вы можете изменить это, включив строку запроса в свой запрос к источнику данных.

Настройка запроса из JavaScript

Чтобы задать строку запроса из кода JavaScript, вызовите метод setQuery класса google.visualization.Query .

var query = new google.visualization.Query(DATA_SOURCE_URL);
query.setQuery('select dept, sum(salary) group by dept');
query.send(handleQueryResponse);

Настройка запроса в URL-адресе источника данных

Строку запроса можно добавить к URL-адресу источника данных с помощью параметра tq . Установка запроса в параметре URL вместо JavaScript позволяет легко использовать визуализации, написанные другими разработчиками, и по-прежнему иметь возможность настраивать запрос.

Строка запроса должна быть правильно закодирована как параметр URL. Вы можете закодировать URL-адрес, используя функцию JavaScript encodeURIComponent , или вы можете закодировать его вручную, используя инструмент кодирования в конце этого раздела.

Пример:

Рассмотрим следующую строку запроса для электронной таблицы Google. (Обратите внимание, что идентификаторы столбцов в электронных таблицах всегда представляют собой буквы; текст заголовков столбцов, отображаемый в опубликованной электронной таблице, является метками, а не идентификаторами. В строке запроса необходимо использовать идентификатор, а не метку.)

select A, sum(B) group by A

При кодировании этот запрос становится:

select%20A%2C%20sum(B)%20group%20by%20A

Предположим, что это URL-адрес вашей электронной таблицы:

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4

Добавьте /gviz/tq?tq= YOUR_QUERY_STRING к URL электронной таблицы, чтобы получить окончательную строку запроса:

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4/gviz/tq?tq=select%A%2C%20sum(B)%20group%20by%20A

Используйте приведенный ниже инструмент для кодирования или декодирования строки запроса:

Примечание. Для доступа к данным частной электронной таблицы требуется передача явных учетных данных авторизации с использованием OAuth. Дополнительную информацию см. в разделе Таблицы Google: авторизация .

Синтаксис языка

Обзор

Синтаксис языка запросов API визуализации Google похож на синтаксис SQL. Однако это подмножество SQL с некоторыми собственными функциями, которые вам необходимо изучить. Если вы знакомы с SQL, его изучение не должно составить особого труда.

Таблицы данных

В этом документе термин таблица данных используется для обозначения набора результатов запроса. Таблица данных состоит из строк и столбцов. Каждый столбец в таблице данных имеет следующие свойства:

  • Идентификатор (или идентификатор столбца ). Используется для ссылки на столбцы в запросе. Обратите внимание, что вы никогда не должны пытаться ссылаться на столбец по метке в запросе, только по идентификатору. Совет. Старайтесь не использовать идентификаторы, содержащие пробелы; пространствами трудно управлять, и это может привести к тому, что вы сделаете небольшие, но трудно находимые ошибки в своем коде. Кроме того, идентификатор, содержащий пробелы, должен быть заключен в обратные кавычки.
  • Этикетка . string , которая обычно отображается для конечных пользователей. Например, как легенда в круговой диаграмме или заголовок столбца в таблице.
  • Тип данных . Поддерживаемые типы данных: string , number , boolean , date , datetime -время и время timeofday . Все значения столбца будут иметь тип данных, соответствующий типу столбца, или null значение. Эти типы похожи, но не идентичны типам JavaScript. описано в разделе Литералы на этой странице.
  • Шаблон форматирования . Источник данных может определять шаблоны форматирования для некоторых или всех своих столбцов. Вы можете переопределить этот шаблон, включив предложение формата .

Таблица, используемая во всех примерах:

В этом разделе все примеры запросов относятся к следующей таблице. Заголовки столбцов являются идентификаторами столбцов.

name
string
dept
string
lunchTime
timeofday
salary
number
hireDate
date
age
number
isSenior
boolean
seniorityStartTime
datetime
JohnEng12:00:00
1000
2005-03-1935true2007-12-02 15:56:00
DaveEng12:00:00
500
2006-04-1927falsenull
SallyEng13:00:00
600
2005-10-1030falsenull
BenSales12:00:00
400
2002-10-1032true2005-03-09 12:30:00
DanaSales12:00:00
350
2004-09-0825falsenull
MikeMarketing13:00:00
800
2005-01-1024true2007-12-30 14:40:00

Языковые пункты

Синтаксис языка запросов состоит из следующих предложений. Каждое предложение начинается с одного или двух ключевых слов. Все пункты необязательны. Предложения разделяются пробелами. Порядок предложений должен быть следующим:

Пункт Применение
select Выбирает, какие столбцы возвращать и в каком порядке. Если этот параметр опущен, возвращаются все столбцы таблицы в порядке по умолчанию.
where Возвращает только строки, соответствующие условию. Если опущено, возвращаются все строки.
group by Агрегирует значения по строкам.
pivot Преобразует отдельные значения в столбцах в новые столбцы.
order by Сортирует строки по значениям в столбцах.
limit Ограничивает количество возвращаемых строк.
offset Пропускает заданное количество первых строк.
label Устанавливает метки столбцов.
format Форматирует значения в определенных столбцах, используя заданные шаблоны форматирования.
options Устанавливает дополнительные параметры.
from Предложение from было удалено из языка.

Выбирать

Предложение select используется для указания возвращаемых столбцов и их порядка. Если это предложение не указано или если используется select * , возвращаются все столбцы таблицы источника данных в их исходном порядке. На столбцы ссылаются идентификаторы (а не метки). Например, в электронной таблице Google идентификаторы столбцов представляют собой одно- или двухсимвольную букву столбца (A, B, C, ...).

Элементами в предложении select могут быть идентификаторы столбцов или выходные данные функций агрегирования , скалярных функций или операторов .

Примеры:

select *
select dept, salary
select max(salary)

В следующем примере обратные кавычки используются для ссылки на идентификаторы столбцов, которые содержат пробелы (адрес электронной почты) или зарезервированные слова (дата):

select `email address`, name, `date`

Выполнение следующего запроса к таблице примера :

select lunchTime, name

Возвращает следующий ответ:

lunchTime name
12:00:00John
12:00:00Dave
13:00:00Sally
12:00:00Ben
12:00:00Dana
13:00:00Mike

Где

Предложение where используется для возврата только тех строк, которые соответствуют указанному условию.

Простые операторы сравнения: <=, <, >, >=, =, !=, <> . Оба оператора сравнения != <> означают не равно. Строки сравниваются по лексикографическому значению. Обратите внимание, что равенство обозначается = , а не == , как в большинстве компьютерных языков. Сравнение с null выполняется с помощью is null или is not null .

Вы можете объединить несколько условий, используя логические операторы and , or , и not . Скобки можно использовать для явного определения приоритета.

Предложение where также поддерживает некоторые более сложные операторы сравнения строк. Эти операторы принимают две строки в качестве аргументов; любые нестроковые аргументы (например, даты или числа) перед сравнением будут преобразованы в строки. Сопоставление строк чувствительно к регистру (вы можете использовать скалярные функции upper() или lower() , чтобы обойти это).

  • contains - совпадение подстроки. целое contains часть верно, если часть находится где-нибудь внутри целого . Пример: where name contains 'John' соответствует «Джон», «Джон Адамс», «Долговязый Джон Сильвер», но не «Джон Адамс».
  • starts with - совпадение префикса. значение starts with префикса , истинно, если префикс стоит в начале значения . Примеры: where dept starts with 'engineering' соответствует «инженерный» и «инженерный менеджеры». where dept starts with 'e' соответствует «engineering», «eng» и «e».
  • ends with - совпадение суффикса. значение ends with суффиксом , истинно, если суффикс находится в конце значения . Пример: where role ends with 'y' соответствует «ковбою», «мальчику» и «у».
  • matches - совпадение (preg) с регулярным выражением. haystack matches игле истинно, если регулярное выражение в игле соответствует стогу сена . Примеры: where country matches '.*ia' соответствует Индии и Нигерии, но не Индиане. Обратите внимание, что это не глобальный поиск, поэтому where country matches 'an' , это не будет соответствовать 'Канада'.
  • like — текстовый поиск, который поддерживает два подстановочных знака: %, который соответствует нулю или более символов любого типа, и _ (подчеркивание), который соответствует любому одному символу. Это похоже на оператор SQL LIKE. Пример: where name like fre% соответствует «fre», «fred» и «freddy».

Примеры:

where salary >= 600
where dept != 'Eng' and date '2005-01-21' < hireDate
where (dept<>'Eng' and isSenior=true) or (dept='Sales') or seniorityStartTime is null

Выполнение следующего запроса к таблице примера :

select name where salary > 700

Возвращает следующий ответ:

name
John
Mike

Группа по

Предложение group by используется для агрегирования значений по строкам. Для каждой отдельной комбинации значений в предложении group-by создается одна строка. Данные автоматически сортируются по столбцам группировки, если иное не указано в предложении order by .

Примечание. Если вы используете предложение group by , то каждый столбец , указанный в предложении select , должен быть либо указан в предложении group by , либо обернут функцией агрегирования .

Примеры:

select dept, max(salary) group by dept

Выполнение следующего запроса к таблице примера :

select lunchTime, avg(salary), count(age) group by isSenior,lunchTime

Возвращает следующий ответ:

lunchTime avg-salary count-age
12:00:00 425 2
13:00:00 600 1
12:00:00 700 2
13:00:00 800 1

Вращаться

Предложение pivot используется для преобразования различных значений в столбцах в новые столбцы. Например, сводка по столбцу «год» создаст таблицу со столбцом для каждого отдельного года, который появляется в исходной таблице. Это может быть полезно, если, например, визуализация линейной диаграммы рисует каждый столбец как отдельную линию. Если вы хотите нарисовать отдельную строку для каждого года, а «год» — это один из столбцов исходной таблицы, то хорошим вариантом будет использование операции поворота для выполнения необходимого преобразования данных.

Примечание. Если вы используете pivot предложение, то каждый столбец , указанный в предложении select , должен быть либо указан в предложении group by , либо обернут функцией агрегирования .

Поскольку несколько строк могут содержать одни и те же значения для столбцов сводки, сводка подразумевает агрегирование. Обратите внимание, что при использовании pivot без использования group by результирующая таблица будет содержать ровно одну строку. Например, выполнив следующий запрос к таблице примера :

select sum(salary) pivot dept

Возвращает следующий ответ:

Eng sum-salary Marketing sum-salary Sales sum-salary
2100 800 750

Это потому, что 2100 — это сумма зарплат инженерного отдела, 800 — отдела маркетинга и т. д.

Использование pivot вместе с group by может быть еще более полезным, так как создается таблица, в которой каждая ячейка содержит результат агрегирования для соответствующей строки и соответствующего столбца. Например, выполнив следующий запрос к таблице примеров :

select dept, sum(salary)
  group by dept
  pivot lunchTime

Возвращает следующий ответ:

dept 12:00:00 sum-salary 13:00:00 sum-salary
Eng 1500 600
Marketing null 800
Sales 750 null

Вы также можете «инвертировать» эту таблицу, переключая столбцы и строки, переключаясь между pivot столбцами и group by столбцам. Выполнение следующего запроса к таблице примера :

select lunchTime, sum(salary)
  group by lunchTime
  pivot dept

Возвращает следующий ответ:

lunchTime Eng sum-salary Marketing sum-salary Sales sum-salary
12:00:00 1500 null 750
13:00:00 600 800 null

Вы также можете использовать более одного столбца в предложении pivot . В таком случае столбцы таблицы ответов состоят из всех уникальных комбинаций значений в столбцах, существующих в исходной таблице. Например, выполнив следующий запрос к таблице примера :

select sum(salary)
  pivot dept, lunchTime

Возвращает следующий ответ:

Eng,12:00:00 sum-salary Eng,13:00:00 sum-salary Marketing,13:00:00 sum-salary Sales,12:00:00 sum-salary
1500 600 800 750

Обратите внимание, что только комбинации, которые появляются в исходной таблице, получают столбцы в таблице ответов. Вот почему нет столбца «Маркетинг, 12:00:00» или «Продажи, 13:00:00».

Также возможно использование более чем одной агрегации. Например, выполнив следующий запрос к таблице примера :

select sum(salary), max(lunchTime)
  pivot dept

Возвращает следующий ответ:

Eng sum-salary Marketing sum-salary Sales sum-salary Eng max-lunchTime Marketing max-lunchTime Sales max-lunchTime
2100 800 750 13:00:00 13:00:00 12:00:00

Вы можете комбинировать несколько агрегаций в предложении select , несколько столбцов в предложении group by и несколько столбцов в предложении pivot . Внутри агрегация выполняется конкатенацией столбцов в предложениях group by и pivot.

Столбцы, указанные в предложении pivot , могут не отображаться в предложениях select , group by или order by . Когда используется pivot , предложение order by не может содержать столбцы агрегации. Причина этого в том, что для каждой агрегации, указанной в предложении select , в таблице результатов создается много столбцов. Однако вы можете форматировать столбцы агрегации при использовании pivot . Результатом такого форматирования является то, что все новые столбцы, относящиеся к конкретной агрегации, которые создаются операцией сводки, форматируются по указанному шаблону. В приведенном выше примере добавление format sum(salary) "some_format_string" повлияет на следующие столбцы: Eng sum-salary, Marketing sum-salary и Sales sum-salary.

Вы можете пометить столбцы агрегации. Если в предложении метки не указана label , метка столбца, созданного в результате поворота, состоит из списка значений в столбцах сводки, типа агрегирования (минимум, максимум, сумма, ...) и метка агрегированного столбца. Например "Eng,12:00:00 сум Зарплата". Если в предложении select была указана только одна агрегация, то часть агрегации удаляется из метки, и сохраняется только список значений в сводных столбцах. Например, «Англ, 12:00:00». Когда в предложении label указана метка для столбца агрегации, запрошенная метка добавляется к списку значений как в случае, когда в предложении select присутствует только одна агрегация, так и в случае, когда их несколько. Например, label sum(salary) "sumsal" приведет к меткам столбцов "Eng,12:00:00 sumsal", "Eng,13:00:00 sumsal" и т. д.

Сортировать по

Предложение order by используется для сортировки строк по значениям в указанных столбцах.

Элементы в предложении order by могут быть идентификаторами столбцов или выходными данными функций агрегирования , скалярных функций или операторов .

Примеры:

order by dept, salary desc
select dept, max(salary) group by dept order by max(salary)

Ограничение

Предложение limit используется для ограничения количества возвращаемых строк.

Пример:

limit 100

Компенсировать

Предложение offset используется для пропуска заданного количества первых строк. Если используется предложение limit , сначала применяется offset : например, limit 15 offset 30 возвращает строки с 31 по 45.

Примеры:

offset 10
limit 30 offset 210

Этикетка

Предложение label используется для установки метки для одного или нескольких столбцов. Обратите внимание, что вы не можете использовать значение метки вместо идентификатора в запросе.

Элементы в предложении label могут быть идентификаторами столбцов или выходными данными функций агрегации , скалярных функций или операторов .

Синтаксис:

label column_id label_string [,column_id label_string]
column_id
Идентификатор столбца , которому назначается метка.
label_string
Метка, назначаемая этому столбцу. Во многих визуализациях метка столбца используется как текст для отображения конечному пользователю, например метка легенды на круговой диаграмме. Метки являются строковыми литералами и следуют этим правилам синтаксиса.

Пример:

В следующем примере метка для столбца отдела задается как «Отдел», метка для столбца имени — как «Имя сотрудника», а метка для столбца местоположения — как «Местоположение сотрудника».

label dept 'Department', name "Employee Name", location 'Employee Location'

Формат

Предложение format используется для указания форматированного значения для ячеек в одном или нескольких столбцах. Возвращаемые данные должны включать как фактическое значение, так и форматированное значение для каждой ячейки в форматированном столбце. Многие визуализации используют неформатированное значение для вычислений, а форматированное значение — для отображения. Шаблоны, указанные в этом предложении, обычно возвращаются в свойстве шаблона соответствующих столбцов.

Синтаксис шаблона:

number , date , время timeofday , datetime и время
Шаблоны даты и числа , определенные ICU .
boolean
Шаблон представляет собой string в формате « значение-если-истина : значение-если-ложь ».

Пример:

format salary '#,##0.00', hireDate 'dd-MMM-yyyy', isSenior 'Yes!:Not yet'

Опции

Предложение options используется для управления дополнительными параметрами выполнения запроса. Возможные ключевые слова, которые могут следовать за предложением options :

  • no_format Удаляет отформатированные значения из результата и оставляет только базовые значения. Может использоваться, когда конкретная визуализация не использует форматированные значения для уменьшения размера ответа.
  • no_values ​​Удаляет базовые значения из результата и оставляет только отформатированные значения. Может использоваться, когда конкретная визуализация использует только отформатированные значения, чтобы уменьшить размер ответа.

Функции обработки данных

Существует несколько типов операторов и функций, которые позволяют вам манипулировать или агрегировать данные в одном столбце, а также сравнивать или объединять данные в разных столбцах. Примеры включают sum() (для сложения всех значений в столбце), max (для поиска наибольшего значения в столбце) и + (для сложения значений двух столбцов в одной строке).

Некоторые функции могут появляться в любом предложении; некоторые могут появляться в подмножестве предложений. Это задокументировано ниже.

Пример:

Учитывая эту таблицу... Если мы применим этот запрос... Мы получаем этот результат.
Имя Зарплата налог Дата начала
Шарон 1000 100 01.01.2009
Авиталь 2000 г. 200 21.01.2008
Моран 3000 300 12.02.2008
select upper(name), year(startDate)
Имя год(дата начала)
АВИТАЛЬ 2008 г.
МОРАН 2008 г.
ШАРОН 2009 г.

Следующие функции обработки данных определяются языком запросов Google Visualization API:

Функции агрегации

Функциям агрегирования передается один идентификатор столбца, и они выполняют действие для всех значений в каждой группе (группы задаются предложениями group by или pivot или всеми строками, если эти предложения не используются).

Примеры:

select max(salary)               // Returns a table with one column and one row.
select max(salary) group by dept // Returns a table with the max salary for each dept column value.
select max(salary) pivot dept    // Returns a one-row table with a column for each dept,
                                 //   and the max salary for that department.

Агрегирующие функции можно использовать в предложениях select , order by , label , format . Они не могут появляться в предложениях where , group by , pivot , limit , offset или options .

Вот поддерживаемые функции агрегации:

Имя Описание Поддерживаемые типы столбцов Тип возврата
avg() Возвращает среднее значение всех значений в столбце для группы. number number
count() Возвращает количество элементов в указанном столбце для группы. Пустые ячейки не учитываются. Любой тип number
max() Возвращает максимальное значение в столбце для группы. Даты сравниваются с более ранними по размеру, string сравниваются по алфавиту с учетом регистра. Любой тип Тот же тип, что и столбец
min() Возвращает минимальное значение в столбце для группы. Даты сравниваются с более ранними по размеру, string сравниваются по алфавиту с учетом регистра. Любой тип Тот же тип, что и столбец
sum() Возвращает сумму всех значений в столбце для группы. number number

Примечание. Функции агрегации могут принимать в качестве аргумента только идентификатор столбца:

max(startDate)                      // OK
min(firstScore) + min(secondScore)  // OK
max(year(startDate))                // INVALID. max requires column ID
sum(salary + perks)                 // INVALID. sum requires column ID.

Скалярные функции

Скалярные функции работают с нулем или более параметрами, чтобы получить другое значение. Скалярным функциям можно передать любое выражение, результатом которого является параметр соответствующего типа. Обратите внимание, что эти типы — это типы, определенные в разделе « Литералы » этого документа, которые могут немного отличаться от объектов JavaScript с аналогичными именами.

Обратите внимание, что имя столбца будет изменено путем переноса его на скалярную функцию.

Скалярные функции могут принимать в качестве параметра все, что оценивается как одно значение:

year(max(startDate))
datediff(now(), todate(1234567890000))

Скалярные функции можно использовать в любом из следующих предложений: select , where , group by , pivot , order by , label , и format .

Имя
year()

Возвращает значение года из значения даты или даты и времени. Например: year(date "2009-02-05") возвращает 2009.

Параметры: один параметр типа date или datetime .
Тип возврата: number
month()

Возвращает отсчитываемое от нуля значение месяца из значения даты или даты и времени. Например: month(date "2009-02-05") возвращает 1. Примечание: месяцы отсчитываются от 0, поэтому функция возвращает 0 для января, 1 для февраля и т. д.

Параметры: один параметр типа date или datetime .
Тип возврата: number
day()

Возвращает день месяца из значения date или даты и времени. Например: day(date "2009-02-05") возвращает 5.

Параметры: один параметр типа date или datetime .
Тип возврата: number
hour()

Возвращает значение часа из значения datetime или timeofday . Например: hour(timeofday "12:03:17") возвращает 12.

Параметры: один параметр типа datetime или timeofday .
Тип возврата: number
minute()

Возвращает значение минуты из значения datetime или timeofday . Например: minute(timeofday "12:03:17") возвращает 3.

Параметры: один параметр типа datetime или timeofday .
Тип возврата: number
second()

Возвращает второе значение из значения datetime или timeofday . Например: second(timeofday "12:03:17") возвращает 17.

Параметры: один параметр типа datetime или timeofday .
Тип возврата: number
millisecond()

Возвращает миллисекундную часть значения datetime или timeofday . Например: millisecond(timeofday "12:03:17.123") возвращает 123.

Параметры: один параметр типа datetime или timeofday .
Тип возврата: number
quarter()

Возвращает квартал из значения date или datetime и времени. Например: quarter(date "2009-02-05") возвращает 1. Обратите внимание, что кварталы отсчитываются от 1, поэтому функция возвращает 1 для первого квартала, 2 для второго и т. д.

Параметры: один параметр типа date или datetime .
Тип возврата: number
dayOfWeek()

Возвращает день недели из значения date или datetime и времени. Например: dayOfWeek(date "2009-02-26") возвращает 5. Обратите внимание, что дни отсчитываются от 1, поэтому функция возвращает 1 для воскресенья, 2 для понедельника и т. д.

Параметры: один параметр типа date или datetime .
Тип возврата: number
now()

Возвращает значение даты и времени, представляющее текущую datetime и время в часовом поясе по Гринвичу.

Параметры: Нет
Тип возвращаемого значения: datetime
dateDiff()

Возвращает разницу в днях между двумя значениями date или datetime и времени. Примечание. В расчетах используются только части значений date , поэтому функция всегда возвращает целочисленное значение. Например: dateDiff(date "2008-03-13", date "2008-02-12") возвращает 29; dateDiff(date "2009-02-13", date "2009-03-13") возвращает -29. Значения времени усекаются перед сравнением.

Параметры: два параметра типа date или datetime (может быть по одному каждому)
Тип возврата: number
toDate()

Преобразует заданное значение в значение date .

  • Учитывая date , он возвращает то же значение.
  • Учитывая datetime , он возвращает часть date . Например: toDate(dateTime "2009-01-01 12:00:00") возвращает "2009-01-01".
  • Учитывая number N, он возвращает date через N миллисекунд после эпохи. Эпоха определяется как 1 января 1970 года, 00:00:00 по Гринвичу. Например: toDate(1234567890000) возвращает "2009-02-13".
Параметры: один параметр типа date , datetime или number .
Тип возврата: date
upper()

Возвращает заданную string заглавными буквами. Например: upper("foo") возвращает "FOO".

Параметры: один параметр string типа.
Тип возвращаемого значения: string
lower()

Возвращает заданную string строчными буквами. Например: lower("Bar") возвращает "bar".

Параметры: один параметр string типа.
Тип возвращаемого значения: string

Арифметические операторы

Вы можете использовать арифметические операторы для выполнения математических операций над всем, что оценивается как одно число (то есть вывод соответствующих агрегатных функций, операторов или констант).

Примеры:

select empSalary - empTax
select 2 * (max(empSalary) / max(empTax))

Определены следующие операторы:

Имя Описание Параметры Тип возврата
+ Возвращает сумму двух number значений. Два number с number
- Возвращает разницу между двумя number значениями. Два number с number
* Возвращает произведение двух number s. Два number с number
/ Возвращает частное двух number s. Деление на ноль возвращает ноль. Два number с number

Элементы языка

Литералы

Литералы — это значения, используемые для сравнения или присваивания. Литералы могут быть string , числами, логическими значениями или различными типами даты/времени. Вот несколько примеров литералов, используемых в синтаксисе запросов:

where startDate < date "2008-03-18"  // date "2008-03-18" is a date literal
limit 30                             // 30 is a numeric literal
format salary '#,##0.00', isSenior 'not yet:of course!'  // '#,##0.00' and 'not yet:of course!' are both string literals

Вот форматы для каждого типа литерала:

string
string литерал должен быть заключен в одинарные или двойные кавычки. Примеры: "fourteen" 'hello world' "It's raining" .
number
Числовые литералы задаются в десятичной системе счисления. Примеры: 3 3.0 3.14 -71 -7.2 .6
boolean
Булевы литералы либо true , либо false .
date
Используйте date ключевого слова, за которой следует string литерал в формате yyyy-MM-dd . Пример: date "2008-03-18" .
timeofday
Используйте ключевое слово timeofday , за которым следует string литерал в формате HH:mm:ss[.SSS] . Пример: timeofday "12:30:45" .
datetime
Дата и время с использованием либо ключевого слова datetime , либо ключевого слова timestamp , за которым следует string литерал в формате yyyy-MM-dd HH:mm:ss[.sss] . Пример: datetime '2008-03-18 12:30:34.123'

Идентификаторы

Идентификаторы (или идентификаторы) — это текстовые string , которые идентифицируют столбцы.

Важно: если ваш идентификатор

  • Имеет пробелы,
  • Зарезервированное слово ,
  • Содержит что угодно, кроме буквенно-цифровых символов или символов подчеркивания ([a-zA-Z0-9_]), или
  • Начинается с цифры

он должен быть заключен в обратные кавычки (не в одинарные).

В противном случае ваш идентификатор не нужно заключать в кавычки. (Обратите внимание, что не все ключевые слова , определенные синтаксисом, являются зарезервированными словами, поэтому, например, вы можете использовать «max» в качестве идентификатора, не заключая его в кавычки.)

Примеры: col1 employee_table `start date` `7 days traffic` `select`

Мы рекомендуем не выбирать идентификатор, который требует обратных кавычек, потому что можно легко забыть использовать обратные кавычки или случайно использовать «одинарные кавычки» вместо «обратных кавычек». Это распространенные ошибки, и часто их трудно отладить.

Чувствительность к регистру

Идентификаторы и строковые литералы чувствительны к регистру. Все остальные языковые элементы нечувствительны к регистру.

Зарезервированные слова

Следующие зарезервированные слова должны быть заключены в обратные кавычки, если они используются в качестве идентификатора :

and
asc
by
date
datetime
desc
false
format
group
label
limit
not
offset
options
or
order
pivot
select
timeofday
timestamp
true
where