쿼리 언어 참조 (버전 0.7)

Google 시각화 API 쿼리 언어를 사용하면 데이터 소스에 대한 쿼리로 다양한 데이터 조작을 수행할 수 있습니다.

목차

소개

일반적으로 시각화는 특정 형식의 데이터를 예상합니다. 예를 들어 원형 차트는 데이터를 텍스트 라벨과 숫자 값, 이렇게 두 개의 열로 예상할 수 있습니다. 데이터 소스 내의 데이터가 이 구조와 정확하게 일치하지 않을 수 있습니다. 예를 들어 데이터 소스에 열이 3개 이상 있거나 열 순서가 원형 차트에서 예상하는 순서와 일치하지 않을 수 있습니다.

쿼리 언어를 통해 데이터 소스에 데이터 조작 및 형식 지정 요청을 보내고 반환된 데이터 구조와 콘텐츠가 예상 구조와 일치하는지 확인할 수 있습니다.

쿼리 언어의 구문은 SQL과 유사합니다. SQL에 익숙한 개발자는 이 쿼리 언어를 빠르게 학습하고 사용할 수 있어야 합니다. 웹에서 여러 SQL 튜토리얼을 사용할 수 있습니다. 이 쿼리 언어와 SQL 사이에는 구문 섹션에 설명되어 있는 차이점이 있습니다.

데이터 소스는 쿼리 언어를 구현하지 않는 경우(또는 쿼리 검색어를 구현한다면) 언어의 모든 기능을 구현할 필요가 없습니다. 특별한 이유가 없는 한 이 언어의 모든 기능을 구현하기 위해 데이터 소스에 의존해서는 안 됩니다.

쿼리 언어 사용

자바스크립트 코드 내에서 쿼리 문자열을 설정하거나 데이터 소스 URL에서 쿼리 문자열을 매개변수로 설정하는 방법, 이렇게 2가지 방법으로 쿼리 소스를 데이터 소스 요청에 연결할 수 있습니다. 요청에 쿼리 문자열이 포함되지 않은 경우 데이터 소스의 기본 동작은 기본 행/열 순서와 형식을 사용하여 모든 행과 열을 반환하는 것입니다. 데이터 소스에 대한 요청에 쿼리 문자열을 포함하여 이를 변경할 수 있습니다.

자바스크립트에서 쿼리 설정하기

자바스크립트 코드 내에서 쿼리 문자열을 설정하려면 google.visualization.Query 클래스의 setQuery 메서드를 호출합니다.

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

데이터 소스 URL에서 쿼리 설정하기

쿼리 매개변수는 tq 매개변수를 사용하여 데이터 소스 URL에 추가할 수 있습니다. 자바스크립트 대신 URL 매개변수에 쿼리를 설정하면 다른 개발자가 작성한 시각화를 쉽게 사용할 수 있으며 쿼리를 계속 맞춤설정할 수 있습니다.

쿼리 문자열은 URL 매개변수로 올바르게 인코딩되어야 합니다. 자바스크립트 encodeURIComponent 함수를 사용하여 URL을 인코딩하거나 이 섹션 끝에 있는 인코딩 도구를 사용하여 직접 인코딩할 수 있습니다.

예:

Google Sheets의 다음 쿼리 문자열을 살펴보겠습니다. 스프레드시트의 열 ID는 항상 문자이며, 게시된 스프레드시트에 표시되는 열 제목 텍스트는 ID가 아닌 라벨입니다. 쿼리 문자열에 라벨이 아닌 ID를 사용해야 합니다.)

select A, sum(B) group by A

인코딩될 때 이 쿼리는 다음과 같이 됩니다.

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

이 URL이 스프레드시트의 URL이라고 가정합니다.

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

스프레드시트 URL에 /gviz/tq?tq=YOUR_QUERY_STRING을 추가하여 최종 쿼리 문자열을 가져옵니다.

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 시각화 API 쿼리 언어 구문은 SQL 구문과 유사하도록 설계되었습니다. 그러나 SQL의 하위 집합이며 몇 가지 고유한 특성이 있어야 합니다. SQL에 익숙하다면 너무 어렵지 않게 배워야 합니다.

데이터 표

이 문서에서는 데이터 테이블이라는 용어를 사용하여 쿼리의 결과 집합을 참조합니다. 데이터 테이블은 행과 열로 구성됩니다. 데이터 테이블의 각 열에는 다음과 같은 속성이 있습니다.

  • 식별자(또는 열 ID). 쿼리 내의 열을 참조하는 데 사용됩니다. 쿼리에서 라벨별로 열을 참조하려고 해서는 안 되며, 식별자를 통해서만 참조하려고 해서는 안 됩니다. 도움말: 공백이 포함된 ID는 사용하지 마세요. 공백은 관리하기 어려우며 코딩에서 실수를 발견하기 어려울 수 있습니다. 또한 공백이 포함된 ID는 큰따옴표로 묶어야 합니다.
  • Label(라벨). 일반적으로 최종 사용자에게 표시되는 문자열입니다. 예를 들어 원형 차트의 범례 또는 표의 열 헤더 등이 있습니다.
  • 데이터 유형. 지원되는 데이터 유형은 string, number, boolean, date, datetime, timeofday입니다. 열의 모든 값은 열 유형과 일치하는 데이터 유형 또는 null 값을 갖습니다. 이 유형은 자바스크립트 유형과 비슷하지만 동일하지는 않습니다. 이 페이지의 리터럴 섹션에 설명되어 있습니다.
  • 형식 지정 패턴. 데이터 소스는 일부 또는 모든 열의 형식 패턴을 정의할 수 있습니다. 형식 절을 포함하여 이 패턴을 재정의할 수 있습니다.

모든 예에 사용된 표:

이 섹션 전체에서 모든 쿼리 예시는 다음 표를 참조합니다. 열 헤더는 열 식별자입니다.

이름
string
부서
string
점심시간
timeofday
급여
number
고용 날짜
date
연령
number
선임
boolean
노년층 시작 시간
datetime
12:00:00
1000
2005-03-1935true2007-12-02 15:56:00
Dave12:00:00
500시간
2006-04-1927falsenull
샐리13:00:00
600
2005-10-1030falsenull
Ben영업12:00:00
400
2002-10-1032true2005-03-09 12:30:00
다나영업12:00:00
350
2004-09-0825,000명falsenull
Mike마케팅13: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 Sheets에서 열 식별자는 문자 한두 개 (A, B, C, ...)입니다.

select 절의 항목은 열 식별자 또는 집계 함수, 스칼라 함수 또는 연산자의 출력일 수 있습니다.

예:

select *
select dept, salary
select max(salary)

다음 예시에서는 공백 (이메일 주소)을 포함하거나 예약된 단어 (날짜)를 포함하는 열 ID를 따옴표로 묶는 데 사용합니다.

select `email address`, name, `date`

예시 테이블에서 다음 쿼리를 실행합니다.

select lunchTime, name

다음과 같은 응답을 반환합니다.

점심시간 이름
12:00:00
12:00:00Dave
13:00:00샐리
12:00:00Ben
12:00:00다나
13:00:00Mike

위치

where 절은 지정된 조건과 일치하는 행만 반환하는 데 사용됩니다.

간단한 비교 연산자는 <=, <, >, >=, =, !=, <>입니다. 두 비교 연산자 != <>는 모두 같지 않음을 의미합니다. 문자열은 사전식 값에 따라 비교됩니다. 동등성은 대부분의 컴퓨터 언어에서 ==가 아닌 =로 표시됩니다. nullis null 또는 is not null를 사용하여 비교합니다.

and, or, not 논리 연산자를 사용하여 여러 조건을 조인할 수 있습니다. 괄호를 사용하여 명시적 우선순위를 정의할 수 있습니다.

장소 절은 좀 더 복잡한 문자열 비교 연산자도 지원합니다. 이러한 연산자는 두 문자열을 인수로 사용합니다. 문자열이 아닌 모든 인수 (예: 날짜 또는 숫자)는 비교 전에 문자열로 변환됩니다. 문자열 일치는 대소문자를 구분합니다. upper() 또는 lower() 스칼라 함수를 사용하면 이 문제를 해결할 수 있습니다.

  • contains - 하위 문자열 일치. part전체 내에 있는 경우 contains part가 true입니다. 예: where name contains 'John'은 'John', 'John Adams', 'Long John Silver'와 일치하지만 'john adams'와는 일치하지 않습니다.
  • starts with - 프리픽스가 일치합니다. value starts with prefixvalue의 시작 부분에 있는 경우 true입니다. 예: where dept starts with 'engineering'은 '엔지니어링' 및 '엔지니어링 관리자'와 일치합니다. where dept starts with 'e'은 'engineering', 'eng', 'e'와 일치합니다.
  • ends with - 서픽스 일치입니다. suffixvalue 끝에 있으면 value ends withsuffix가 true입니다. 예: where role ends with 'y'는 '카우보이', '소년', 'y'와 일치합니다.
  • matches - (preg) 정규 표현식 일치입니다. haystack matches needleneedle의 정규 표현식이 haystack과 일치하는 경우 true입니다. 예: where country matches '.*ia'은 인도 및 나이지리아와 일치하지만 인디애나와는 일치하지 않습니다. 이는 전체 검색어가 아니므로 where country matches 'an'는 '캐나다'와 일치하지 않습니다.
  • like - 두 가지 와일드 카드를 지원하는 텍스트 검색입니다. %는 종류에 관계없이 0개 이상의 문자와 일치하고 다른 하나는 1개 문자와 일치하는 _ (밑줄)를 지원합니다. 이는 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

다음과 같은 응답을 반환합니다.

이름
Mike

그룹화 기준

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

다음과 같은 응답을 반환합니다.

점심시간 평균 급여 count-age
12:00:00 425 2
13:00:00 600 1
12:00:00 700 2
13:00:00 800 1

피봇

pivot 절은 열의 고유한 값을 새 열로 변환하는 데 사용됩니다. 예를 들어 'year' 열을 피벗하면 원본 테이블에 표시되는 각 연도의 열이 포함된 테이블이 생성됩니다. 이 기능은 예를 들어 선 차트 시각화에서 각 열을 별도의 선으로 그리는 경우에 유용합니다. 매년 별도의 행을 그리고 '연도'가 원본 테이블의 열 중 하나인 경우, 피벗 작업을 사용하여 필요한 데이터 변환을 수행하는 것이 좋습니다.

참고: pivot 절을 사용하는 경우 select 절에 나열된 모든 열group by 절에 나열하거나 집계 함수로 래핑해야 합니다.

여러 행에 피봇 열의 값이 동일할 수 있으므로 피봇은 집계를 의미합니다. group by를 사용하지 않고 pivot를 사용하면 결과 테이블에 정확히 1개의 행이 포함됩니다. 예를 들어 예시 테이블에서 다음 쿼리를 실행합니다.

select sum(salary) pivot dept

다음과 같은 응답을 반환합니다.

영어 총급여 마케팅 총급여 판매 합계 급여
2100 800 750

이는 2100이 엔지니어 부서의 급여 합계, 마케팅 부서의 급여 800 등이기 때문입니다.

pivotgroup by과 함께 사용하면 각 셀에 관련 행 및 관련 열에 대한 집계 결과가 포함된 테이블이 생성되므로 훨씬 더 유용할 수 있습니다. 예를 들어 예시 테이블에서 다음 쿼리를 실행합니다.

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

다음과 같은 응답을 반환합니다.

부서 12:00:00 총급여 13:00:00 총급여
1,500 600
마케팅 null 800
영업 750 null

pivot 열과 group by 열 간에 전환하여 이 열을 '반전'하여 열과 행을 전환할 수도 있습니다. 예시 테이블에서 다음 쿼리 실행:

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

다음과 같은 응답을 반환합니다.

점심시간 영어 총급여 마케팅 총급여 판매 합계 급여
12:00:00 1,500 null 750
13:00:00 600 800 null

pivot 절에 열을 두 개 이상 사용할 수도 있습니다. 이 경우 응답 테이블의 열은 원본 테이블에 있는 열의 모든 고유한 값 조합으로 구성됩니다. 예를 들어 예시 테이블에서 다음 쿼리를 실행합니다.

select sum(salary)
  pivot dept, lunchTime

다음과 같은 응답을 반환합니다.

잉,12:00:00 총급여 잉,13:00:00 총급여 마케팅,13:00:00 총급여 판매,12:00:00 총급여
1,500 600 800 750

원본 테이블에 표시되는 조합만 응답 테이블에 열이 제공됩니다. 따라서 마케팅,12:00:00 또는 판매,13:00:00에 열이 없습니다.

집계를 둘 이상 사용하는 것도 가능합니다. 예를 들어 예시 테이블에서 다음 쿼리를 실행합니다.

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

다음과 같은 응답을 반환합니다.

영어 총급여 마케팅 총급여 판매 합계 급여 영어 최대 점심시간 마케팅 max-lunchTime 판매 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 절에 집계가 하나만 지정된 경우 라벨에서 집계 부분이 삭제되고 피봇 열의 값 목록만 유지됩니다. 예: 'Eng,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 절은 하나 이상의 열에 라벨을 설정하는 데 사용됩니다. 쿼리에서 ID 대신 라벨 값을 사용할 수 없습니다.

label 절의 항목은 열 식별자 또는 집계 함수, 스칼라 함수 또는 연산자의 출력일 수 있습니다.

구문:

label column_id label_string [,column_id label_string]
column_id
라벨이 할당되는 열의 식별자입니다.
label_string
해당 열에 할당할 라벨입니다. 대부분의 시각화에서는 열 라벨을 텍스트로 사용하여 최종 사용자에게 표시합니다(예: 원형 차트의 범례 라벨). 라벨은 문자열 리터럴이며 이러한 구문 규칙을 따릅니다.

예:

다음 예시에서는 부서 열의 라벨을 '부서'로, 이름 열의 라벨을 '직원 이름'으로, 위치 열의 라벨을 '직원 위치'로 설정합니다.

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

형식

format 절은 하나 이상의 열에 있는 셀에 대해 형식이 지정된 값을 지정하는 데 사용됩니다. 반환된 데이터에는 형식이 지정된 열에 각 셀의 실제 값과 형식이 지정된 값이 모두 포함되어야 합니다. 많은 시각화에서 형식 지정되지 않은 값을 계산에 사용하지만, 형식화된 값은 표시에 사용됩니다. 이 절에서 지정하는 패턴은 일반적으로 해당 열의 pattern 속성에 반환됩니다.

패턴 구문:

number, date, timeofday,(datetime)
ICU에 정의된 날짜숫자 패턴입니다.
boolean
패턴은 'value-if-true:value-if-false' 형식의 문자열입니다.

예:

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

 

옵션

options 절은 쿼리 실행의 추가 옵션을 제어하는 데 사용됩니다. options 절을 따라갈 수 있는 키워드는 다음과 같습니다.

  • no_format 서식에서 지정된 값을 결과에서 삭제하고 기본 값만 남겨 둡니다. 특정 시각화가 서식 있는 값을 사용하여 응답 크기를 줄일 때 사용할 수 있습니다.
  • no_values 결과에서 기본 값을 삭제하고 서식이 지정된 값만 남겨둡니다. 특정 시각화가 서식 있는 값만 사용하여 응답 크기를 줄일 때 사용할 수 있습니다.

데이터 조작 함수

단일 열의 데이터를 조작 또는 집계하거나 여러 열에 걸쳐 데이터를 비교하거나 조합할 수 있는 다양한 종류의 연산자와 함수가 있습니다. 예에는 sum() (열에 모든 값을 추가하기 위해), max (열에서 가장 큰 값을 찾기 위해), + (같은 행에 두 열의 값을 더하기 위해)가 있습니다.

일부 절은 모든 절에 표시될 수 있고, 일부는 절의 하위 집합에 표시될 수 있습니다. 이에 대한 내용은 아래에 설명되어 있습니다.

예:

이 표는... 이 쿼리를 적용하는 경우 결과를 확인할 수 있습니다.
이름 급여 세금 StartDate
CANNOT TRANSLATE 1000 100 2009년 1월 1일
아비탈 2,000 200 2008년 1월 21일
Moran 3,000 300 2008년 2월 12일
select upper(name), year(startDate)
이름 연도(시작일)
가상 2008
모란어 2008
샤론 2009

 

다음 데이터 조작 함수는 Google 시각화 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() 그룹에 대한 열에 있는 모든 값의 평균 값을 반환합니다. 숫자 숫자
count() 그룹에 대해 지정된 열에 있는 요소의 개수를 반환합니다. null 셀은 계산되지 않습니다. 모든 유형 숫자
max() 그룹의 열에 최댓값을 반환합니다. 날짜는 이전보다 더 작고, 알파벳 순으로 대소문자가 구분되며, 모든 유형 열과 동일한 유형
min() 그룹의 열에 최솟값을 반환합니다. 날짜는 이전보다 더 작고 문자열이 알파벳 순으로 대소문자가 구분됩니다. 모든 유형 열과 동일한 유형
sum() 그룹에 대한 열의 모든 값의 합계를 반환합니다. 숫자 숫자

참고: 집계 함수는 열 식별자를 인수로만 사용할 수 있습니다.

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

스칼라 함수

스칼라 함수는 0개 이상의 매개변수에 걸쳐 작동하여 다른 값을 생성합니다. 스칼라 함수는 적절한 유형의 매개변수로 평가되는 모든 표현식을 전달할 수 있습니다. 이러한 유형은 이 문서의 리터럴 섹션에 정의된 유형이며, 비슷한 이름의 자바스크립트 객체와 약간 다를 수 있습니다.

열 이름은 스칼라 함수로 래핑하여 변경됩니다.

스칼라 함수는 단일 값으로 평가되는 모든 것을 매개변수로 사용할 수 있습니다.

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

스칼라 함수는 select, where, group by, pivot, order by, label,, format 절에서 사용할 수 있습니다.

이름
year()

날짜 또는 날짜/시간 값에서 연도 값을 반환합니다. 예를 들어 year(date "2009-02-05")는 2009를 반환합니다.

매개변수: 날짜 또는 날짜/시간 유형의 매개변수 1개
반환 유형: 숫자
month()

날짜 또는 날짜/시간 값에서 0부터 시작하는 월 값을 반환합니다. 예를 들어 month(date "2009-02-05")는 1을 반환합니다. 참고: 월은 0부터 시작되므로 함수는 1월에는 0, 2월에는 1을 반환합니다.

매개변수: 날짜 또는 날짜/시간 유형의 매개변수 1개
반환 유형: 숫자
day()

날짜 또는 날짜/시간 값에서 일을 반환합니다. 예를 들어 day(date "2009-02-05")는 5를 반환합니다.

매개변수: 날짜 또는 날짜/시간 유형의 매개변수 1개
반환 유형: 숫자
hour()

날짜/시간 또는 timeofday 값에서 시간 값을 반환합니다. 예를 들어 hour(timeofday "12:03:17")는 12를 반환합니다.

매개변수: 날짜/시간 유형 또는 Timeofday 유형의 매개변수 1개
반환 유형: 숫자
minute()

날짜/시간 또는 timeofday 값에서 분 값을 반환합니다. 예를 들어 minute(timeofday "12:03:17")는 3을 반환합니다.

매개변수: 날짜/시간 유형 또는 Timeofday 유형의 매개변수 1개
반환 유형: 숫자
second()

날짜/시간 값에서 두 번째 값을 반환합니다. 예를 들어 second(timeofday "12:03:17")는 17을 반환합니다.

매개변수: 날짜/시간 유형 또는 Timeofday 유형의 매개변수 1개
반환 유형: 숫자
millisecond()

날짜/시간 또는 timeofday 값의 밀리초 부분을 반환합니다. 예를 들어 millisecond(timeofday "12:03:17.123")는 123을 반환합니다.

매개변수: 날짜/시간 유형 또는 timeofday 유형의 매개변수 1개
반환 유형: 숫자
quarter()

날짜 또는 날짜/시간 값에서 분기를 반환합니다. 예를 들어 quarter(date "2009-02-05")는 1을 반환합니다. 분기는 1부터 시작되므로 함수는 1분기에 1, 두 번째 분기에 2를 반환합니다.

매개변수: 날짜 또는 날짜/시간 유형의 매개변수 1개
반환 유형: 숫자
dayOfWeek()

날짜 또는 날짜/시간 값에서 요일을 반환합니다. 예를 들어 dayOfWeek(date "2009-02-26")는 5를 반환합니다. 날짜는 1을 기반으로 하므로 함수는 일요일은 1, 월요일은 2를 반환합니다.

매개변수: 날짜 또는 날짜/시간 유형의 매개변수 1개
반환 유형: 숫자
now()

GMT 시간대에서 현재 날짜/시간을 나타내는 날짜/시간 값을 반환합니다.

매개변수: 없음
반환 유형: 날짜/시간
dateDiff()

두 날짜 또는 날짜/시간 값 사이의 일수를 반환합니다. 참고: 값의 날짜 부분만 계산에 사용되므로 함수는 항상 정수 값을 반환합니다. 예를 들어 dateDiff(date "2008-03-13", date "2008-02-12")는 29를 반환하고 dateDiff(date "2009-02-13", date "2009-03-13")는 -29를 반환합니다. 시간 값은 비교 전에 잘립니다.

매개변수: 날짜 또는 날짜/시간 유형의 두 매개변수 (각각 하나일 수 있음)
반환 유형: 숫자
toDate()

지정된 값을 날짜 값으로 변환합니다.

  • 날짜가 주어지면 동일한 값이 반환됩니다.
  • 날짜/시간을 지정하면 날짜 부분이 반환됩니다. 예를 들어 toDate(dateTime "2009-01-01 12:00:00")는 '2009-01-01'을 반환합니다.
  • 숫자 N이 주어지면 에포크 이후의 날짜 N밀리초를 반환합니다. 에포크는 1970년 1월 1, 00:00:00 GMT로 정의됩니다. 예를 들어 toDate(1234567890000)는 '2009-02-13'을 반환합니다.
매개변수: 날짜, 날짜/시간 유형 또는 숫자의 매개변수 1개
반품 유형: 날짜
upper()

주어진 문자열을 대문자로 반환합니다. 예를 들어 upper("foo")는 'FOO'를 반환합니다.

매개변수: 문자열 유형의 매개변수 1개
반환 유형: 문자열
lower()

지정된 문자열을 소문자로 반환합니다. 예를 들어 lower("Bar")는 'bar'를 반환합니다.

매개변수: 문자열 유형의 매개변수 1개
반환 유형: 문자열

산술 연산자

산술 연산자를 사용하여 단일 숫자로 평가되는 모든 항목 (즉, 적절한 집계 함수, 연산자 또는 상수의 출력)에 대한 수학 연산을 수행할 수 있습니다.

예:

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

다음 연산자가 정의됩니다.

이름 설명 매개변수 반환 유형
+ 두 숫자 값의 합계를 반환합니다. 숫자 2개 숫자
- 두 숫자 값 사이의 차이를 반환합니다. 숫자 2개 숫자
* 두 숫자의 곱을 반환합니다. 숫자 2개 숫자
/ 두 숫자의 몫을 반환합니다. 0으로 나누면 null이 반환됩니다. 숫자 2개 숫자

언어 요소

리터럴

리터럴은 비교 또는 할당에 사용되는 값입니다. 리터럴은 문자열, 숫자, 부울 값 또는 다양한 날짜/시간 유형일 수 있습니다. 다음은 쿼리 구문에 사용되는 리터럴의 예입니다.

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
문자열 리터럴은 작은따옴표 또는 큰따옴표로 묶어야 합니다. 예: "fourteen" 'hello world' "It's raining"
number
숫자 리터럴은 10진수 표기법으로 지정됩니다. 예: 3  3.0  3.14  -71  -7.2  .6
boolean
부울 리터럴은 true 또는 false입니다.
date
키워드 date에 문자열 리터럴을 사용하고 yyyy-MM-dd 형식을 사용합니다. 예: date "2008-03-18"
timeofday
키워드 timeofday 다음에 문자열 리터럴을 사용해 HH:mm:ss[.SSS] 형식을 사용합니다. 예: timeofday "12:30:45"
datetime
날짜 및 시간(키워드 datetime 또는 키워드 timestamp 다음에 문자열 리터럴을 사용해 yyyy-MM-dd HH:mm:ss[.sss]의 형식을 지정합니다. 예: datetime '2008-03-18 12:30:34.123'

식별자

식별자 (또는 ID)는 열을 식별하는 텍스트 문자열입니다.

중요: 식별자가

  • 공백이 있음,
  • 예약된 단어인 경우
  • 영숫자 문자 또는 밑줄을 제외한 모든 문자 포함 ([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