stats¶
개요¶
각종 통계 데이터를 구하는 명령어 입니다.
설명¶
해당 검색 결과에 각종 함수를 적용하여 통계 값을 구합니다. 마치 SQL의 aggregation과 비슷합니다. 만약 각종 통계 값들이 BY 절 없이 쓰인다면, 전체 결과를 aggregation을 하여, 하나의 열만 검색 결과로 출력 될 것입니다. 만약 BY 절에 의하여 그룹핑할 field가 주어진다면, 해당 field의 유니크한 값들의 개수 만큼의 열이 검색 결과로 출력 될 것 입니다.
Examples¶
HR이라는 필드 이름으로 그룹핑 된 결과 에서, 전체 의 갯수,YEARID필드의 최대값, 최소값 그리고 평균값을 구합니다.
... | stats count(*), max(YEARID), min(YEARID) BY HR
| HR | count(*) | max(YEARID) | min(YEARID) |
|---|---|---|---|
| 8 | 1000 | 2015 | 1881 |
| … | … | … | … |
- 팀별, 시간별 HR의 평균을 구합니다
... | stats avg(HR) by date_group(FTS_PARTITION_TIME, "1H"), TEAMID
| dategroup | TEAMID | avg(HR) |
|---|---|---|
| 20160510180000 | CHA | 2.91176470588235 |
| 20160505180000 | BSN | 1.08 |
| … | … | … |
- quote 문자를 사용하여 단어가 아닌 필드명도 사용할 수 있습니다.
... | stats avg(HR) as '평균(홈런)', count(HR) as '홈런 개수' by date_group(FTS_PARTITION_TIME, "1H"), TEAMID
| dategroup | TEAMID | 평균(홈런) | 홈런 개수 |
|---|---|---|---|
| 20160510180000 | CHA | 2.91176470588235 | 34 |
| 20160505180000 | BSN | 1.08 | 125 |
| … | … | … | … |
Parameters¶
... | stats FUNCTION (AS ALIAS_NAME)?(, FUNCTION (AS ALIAS_NAME)?)* (BY FIELD_NAME (, FIELD_NAME)*)?
| 이름 | 설명 | 필수/옵션 |
|---|---|---|
FUNCTION |
agg_func(FIELD_NAME)을 뜻합니다. 지원하는 agg_func는 아래 표와 같습니다. FIELD_NAME은 field의 이름입니다. |
필수 |
AS ALIAS_NAME |
AS ALIAS_NAME입니다. AS는 키워드 이며 ALIAS_NAME은 변경 할 이름을 뜻합니다. |
옵션 |
BY FIELD_NAME |
BY는 키워드를 나타내고, FIELD_NAME는 그룹핑 할 field명을 의미 합니다. 각 field는 ,으로 구분 됩니다. FIELD_NAME 은 date_group(FIELD, UNIT) 함수를 사용 할 수 있습니다. 시간 단위(UNIT, 초/분/시간/일/월/년)로 FIELD를 그룹핑합니다. FIELD는 시간 필드를 의미합니다. UNIT: 기준 시간 단위는 "10y", "1y", "10m", "1m", "10d", "1d", "10H", "1H", "10M", "1M", "10S" 과 "1S" 이 될 수 있습니다. |
옵션 |
- aggregation functions list
| Arguments | Description | ETC |
|---|---|---|
avg() |
평균 값을 구합니다. | TEXT, BINARY, BOOLEAN 불가능 |
count() |
카운트를 구합니다. | 모든 Type 가능 |
distinct_count() |
유니크한 개별 값의 개수를 구합니다 | 모든 Type 가능 |
first() |
가장 처음의 값을 구합니다. | TEXT, BINARY, BOOLEAN 불가능 |
last() |
가장 마지막 값을 구합니다. | TEXT, BINARY, BOOLEAN 불가능 |
max() |
가장 큰 값을 구합니다 | TEXT, BINARY, BOOLEAN 불가능 |
median() |
중간 값을 구합니다. | TEXT, BINARY, BOOLEAN 불가능 |
min() |
제일 작은 값을 구합니다. | TEXT, BINARY, BOOLEAN 불가능 |
stdev() |
표준편차 값을 구합니다 (SQL 의 STDEV와 동일). | TEXT, BINARY, BOOLEAN 불가능 |
stdevp() |
표준편차 값을 구합니다 (SQL 의 STDEVP와 동일). | TEXT, BINARY, BOOLEAN 불가능 |
sum() |
전체의 합을 구합니다. | TEXT, BINARY, BOOLEAN 불가능 |
var() |
표본의 분산 값을 구합니다. | TEXT, BINARY, BOOLEAN 불가능 |
iqr() |
사분위수 범위(IQR) 값을 구합니다. | TEXT, BINARY, BOOLEAN 불가능 |
Parameters BNF¶
clauses : funcs
| funcs BY byclause
byclause : byexpr
| byclause COMMA byexpr
byexpr : TOKEN
| func
funcs : funcs COMMA func
| func
func : TOKEN LPAREN TOKEN RPAREN
| TOKEN LPAREN TOKEN RPAREN AS TOKEN
| TOKEN LPAREN TOKEN COMMA TOKEN RPAREN
| TOKEN LPAREN TOKEN COMMA TOKEN RPAREN AS TOKEN
TOKEN : [^,|^ |^\|^(|^)|^\'|\"]+
COMMA : ,
LPAREN : (
RPAREN : )
BY : (i?)BY