Справочник по языку запросов (версия 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: авторизация» .

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

Обзор

Синтаксис языка запросов Google Visualization API аналогичен синтаксису 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 префикса. Значение true, если префикс находится в начале значения . Примеры: where dept starts with 'engineering' соответствует «инжиниринг» и «технические менеджеры». where dept starts with 'e' соответствует «инжинирингу», «англу» и «е».
  • ends with - совпадение суффикса. значение ends with суффиксом, истинно, если суффикс находится в конце значения . Пример: where role ends with 'y' соответствует «ковбой», «мальчик» и «y».
  • matches — совпадение регулярного выражения (preg). Значение haystack matches Needle истинно, если регулярное выражение в Needle соответствует Haystack . Примеры: 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 таблицы. На внутреннем уровне агрегирование выполняется путем объединения столбцов в группе по и сводных предложений.

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

Вы можете пометить столбцы агрегирования. Если в предложении label не указана метка, метка столбца, созданного в результате поворота, состоит из списка значений в сводных столбцах, типа агрегации (мин, максимум, сумма, ...) и метка агрегированного столбца. Например «Англ.,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 год

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

Функции агрегирования

Функциям агрегирования передается один идентификатор столбца, и они выполняют действие над всеми значениями в каждой группе (группы задаются предложениями 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()

Возвращает значение часа из значения даты и времени или 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 в часовом поясе GMT.

Параметры: Нет
Тип возврата: 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) возвращает «13 февраля 2009 г.».
Параметры: один параметр типа 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