쿼리 언어 참조 (버전 0.7)

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

목차

소개

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

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

쿼리 언어의 구문은 SQL과 유사합니다. SQL에 익숙한 개발자는 이 쿼리 언어를 빠르게 배우고 사용할 수 있어야 합니다. 웹에서 여러 SQL 튜토리얼을 사용할 수 있습니다. 이 쿼리 언어와 SQL에는 몇 가지 차이점이 있습니다. 자세한 내용은 구문 섹션을 참조하세요.

데이터 소스는 쿼리 언어를 구현하지 않으며, 쿼리 언어를 구현하는 경우 언어의 모든 기능을 구현하는 데 필요하지 않습니다. 다르게 생각하지 않는 한 이 언어의 모든 기능을 구현하기 위해 데이터 소스에 의존해서는 안 됩니다.

쿼리 언어 사용

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

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

자바스크립트 코드 내에서 쿼리 문자열을 설정하려면 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 스프레드시트에 다음과 같은 쿼리 문자열을 사용해 보세요. 스프레드시트의 열 ID는 항상 문자입니다. 게시된 스프레드시트에 표시되는 열 제목 텍스트는 ID가 아닌 라벨입니다. 쿼리 문자열에서 라벨이 아닌 ID를 사용해야 합니다.)

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

스프레드시트 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 예를 들어 원형 차트의 범례 또는 테이블의 열 헤더 등이 있습니다.
  • 데이터 유형. 지원되는 데이터 유형은 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-0825falsenull
Mike마케팅13:00:00
800
2005-01-1024true2007-12-30 14:40:00

언어 조항

쿼리 언어의 구문은 다음 절로 구성됩니다. 각 절은 1~2개의 키워드로 시작합니다. 모든 절은 선택사항입니다. 절은 공백으로 구분됩니다. 절의 순서는 다음과 같아야 합니다.

사용
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)

다음 예에서 역따옴표는 공백 (이메일 주소)을 포함하거나 예약된 단어 (날짜)가 있는 열 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 - 하위 문자열 일치. 전체부분전체 내이면 전체가 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 - 서픽스가 일치합니다. value ends with suffixvalue의 끝에 있는 경우 true입니다. 예: where role ends with 'y'는 'cowboy', 'boy', 'y'와 일치합니다.
  • matches - (preg) 정규 표현식이 일치합니다. haystack matches needle의 정규 표현식이 haystack과 일치하면 needle이 true입니다. 예: where country matches '.*ia'는 인도 및 나이지리아와 일치하지만 인디애나와는 일치하지 않습니다. 이는 전체 검색이 아니므로 where country matches 'an'는 '캐나다'와 일치하지 않습니다.
  • like - 두 가지 와일드 카드를 지원하는 텍스트 검색. 0은 문자 종류에 상관없이 0개 이상 일치하고, _는 밑줄(하나의 문자)과 일치합니다. 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를 사용하면 결과 테이블에 정확히 하나의 행이 포함됩니다. 예를 들어 예시 테이블에서 다음 쿼리를 실행합니다.

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에 해당하는 열이 없는 것입니다.

2개 이상의 집계를 사용할 수도 있습니다. 예를 들어 예시 테이블에서 다음 쿼리를 실행합니다.

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
이 열에 할당할 라벨입니다. 많은 시각화에서는 원형 차트의 열 레이블을 최종 사용자에게 표시할 텍스트로 사용합니다(예: 원형 범례). 라벨은 문자열 리터럴이며 이러한 문법 규칙을 따릅니다.

예:

다음 예에서는 dept 열의 라벨을 'Department'로, 이름 열의 라벨은 'Employee Name', 위치 열의 라벨을 'Employee Location'으로 설정합니다.

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

형식

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

패턴 구문:

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

예:

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() 그룹의 열에 있는 모든 값의 평균 값을 반환합니다. number number
count() 그룹의 지정된 열에 있는 요소의 개수를 반환합니다. null 셀은 집계되지 않습니다. 모든 유형 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.

스칼라 함수

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

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

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

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 유형의 매개변수 1개
반환 유형: number
month()

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

매개변수: date 또는 datetime 유형의 매개변수 1개
반환 유형: number
day()

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

매개변수: date 또는 datetime 유형의 매개변수 1개
반환 유형: number
hour()

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

매개변수: datetime 또는 timeofday 유형의 매개변수 1개
반환 유형: number
minute()

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

매개변수: datetime 또는 timeofday 유형의 매개변수 1개
반환 유형: number
second()

datetime 또는 timeofday 값에서 두 번째 값을 반환합니다. 예를 들어 second(timeofday "12:03:17")는 17을 반환합니다.

매개변수: datetime 또는 timeofday 유형의 매개변수 1개
반환 유형: number
millisecond()

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

매개변수: datetime 또는 timeofday 유형의 매개변수 1개
반환 유형: number
quarter()

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

매개변수: date 또는 datetime 유형의 매개변수 1개
반환 유형: number
dayOfWeek()

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

매개변수: date 또는 datetime 유형의 매개변수 1개
반환 유형: number
now()

GMT 시간대에서 현재 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밀리초를 반환합니다. 에포크는 1970년 1월 1일, 00:00:00 GMT로 정의됩니다. 예를 들어 toDate(1234567890000)는 '2009-02-13'을 반환합니다.
매개변수: date, datetime, number 유형의 매개변수 1개
반환 유형: date
upper()

지정된 string를 대문자로 반환합니다. 예를 들어 upper("foo")는 'FOO'를 반환합니다.

매개변수: string 유형의 매개변수 1개
반환 유형: string
lower()

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

매개변수: string 유형의 매개변수 1개
반환 유형: string

산술 연산자

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

예:

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

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

이름 설명 매개변수 반환 유형
+ number 값의 합계를 반환합니다. number 두 개 number
- number 값 간의 차이를 반환합니다. number 두 개 number
* number의 곱을 반환합니다. number 두 개 number
/ number의 몫을 반환합니다. 0으로 나누면 null이 반환됩니다. 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, yyyy-MM-dd HH:mm:ss[.sss] 형식의 string 리터럴을 사용합니다. 예: datetime '2008-03-18 12:30:34.123'

식별자

식별자 (또는 ID)는 열을 식별하는 텍스트 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