全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

SQL语法

最近更新时间:2021-12-28 14:27:21

语法支持

日志服务支持基础的 SELECT 查询,具体查询语法是

    select_expr [, select_expr] ...
    [WHERE where_condition]
    [GROUP BY {col_name | expr}, ... ]
    [ORDER BY {col_name | expr} [ASC | DESC], ...]
    [LIMIT [offset,] row_count]

说明:SQL查询语法使用限制详见使用限制
下面是一个查询语句示例

    SELECT id,sum(cost) AS result 
    WHERE price>500 
    GROUP BY id

运算符

比较函数

运算符 含义
< 小于
> 大于
<= 小于或等于
>= 大于或等于
= 等于
<> 不等于
BETWEEN 查询处于两个参数之间的数据
IS NULL or IS NOT NULL 判断参数是否是Null值

逻辑运算函数

运算符 含义
AND 只有左右运算数都是true时,结果才为true
OR 左右运算数任一个为true,结果为true
NOT 右侧运算数为false时,结果才为true

真值表

a b a AND b a OR b
TRUE TRUE TRUE TRUE
TRUE FALSE FALSE TRUE
TRUE NULL NULL TRUE
FALSE TRUE FALSE TRUE
FALSE FALSE FALSE FALSE
FALSE NULL FALSE NULL
NULL TRUE NULL TRUE
NULL FALSE FALSE NULL

数学计算函数

运算符 含义
+ 两个参数相加
- 两个参数相减
* 两个参数相乘
/ 两个参数相除求整数
% 两个参数相除求余数
log10(x) 返回以10为底,x的对数
round(x) x四舍五入

聚合函数

运算符 含义 示例
avg(x) 计算x列的算数平均值 select avg(request_time) as avg_times
count(*) 表示所有的行数 select count(*) where method = GET
max(x) 返回最大值 select max(request_time) as max_times
min(x) 返回最小值 select min(request_time) as min_times
sum(x) 返回x列的和 select sum(request_time) as sum_times
stats(x) 返回x列的聚合计算结果,包括avg、max、min、sum等 -
data_histogram(x,interval) 根据指定间隔获取所有匹配的值 select data_histogram(timestamp) where status_code=200
percentiles 指定分位符 percentiles=[0.25 , 0.5 ,0.75]

其他函数

运算符 含义 示例
floor 返回小于或等于指定数值表达式的最大整数,向下取整 select floor(num) as nt
split 按指定符号分割字符串,返回分割后的元素个数 select split(newtype,’,’) as nt
trim 用来移除掉一个字串中的字头或字尾 select trim(newtype) as nt
log 返回x的自然对数,x相对于基数e的对数 -
log10 返回x的基数为10的对数 -
substring 用来截取字符串中的一部分字符 select floor(floor(substring(time,0,14)/100)/5)*5 as nt
round 返回数字表达式并四舍五入为指定的长度或精度 -
sqrt 用来求给定值的平方根 -
concat_ws 将多个字符串连接成一个字符串,但是可以一次性指定分隔符 -
+ 加运算 -
- 减运算 -
* 乘运算 -
/ 除运算 -
date_format 用于以不同的格式显示日期或时间数据 -
coalesce 返回最近的一个为非空值的值 select name, coalesce(age2, age1) as myAge
if 用于条件判断 select name, if(age <= 18, ‘Y’, ‘O’) as myGender
percentile_ranks 计算当前值按百分比计算所处在百分位位置 select percentile_ranks(age, 3, 8, 12, alias=rankAge)
movingavg 滑动平均或移动平均,预测时间序列 select income / 10 AS myincome, sum(income / 10) AS incomeSum, movingavg(field=incomeSum,window=3,alias=incomeSume_avg)
rollingstd 计算滚动标准差 select income / 10 AS myincome, sum(income / 10) AS incomeSum, rollingstd(field=incomeSum,window=2,alias=incomeSume_avg)
parse 将字符串转换为数字和日期和时间格式 select parse(hobby, ‘(?\S+)球’, ‘NOT_MATCH’) AS ballType, COUNT(_index)
now 返回当前的日期和时间 select * FROM myindex WHERE time >= date(date_add(date(now()), interval -100 day)) AND time <= now()
date 提取日期或日期/时间表达式的日期部分 select * WHERE time >= date(date_add(date(now()), interval -100 day)) AND time <= now()
date_add 向日期添加指定的时间间隔 select * WHERE time >= date(date_add(date(now()), interval -100 day)) AND time <= now()

查询语法示例

查询说明 示例
术语聚合 SELECT COUNT(*) GROUP BY gender
多重聚合 SELECT * GROUP BY (gender, state, age),(state),(age)
范围聚合 SELECT COUNT (age) GROUP BY range(age, 20 , 25 , 30 , 35 , 40 )
日期直方图聚合 SELECT online GROUP BY date_histogram(field=‘insert_time’,‘interval’=‘1d’,‘alias’=‘yourAlias’,‘extended_bounds’=’{“min”:“1547083500000”,“max”:“1547343000000”}’,format=‘epoch_millis’)
日期范围聚合 SELECT online GROUP BY date_histogram(field=‘insert_time’,‘interval’=‘1d’,‘alias’=‘yourAlias’,‘extended_bounds’=’{“min”:“1547083500000”,“max”:“1547343000000”}’,format=‘epoch_millis’)
脚本化指标 SELECT scripted_metric( ’ map_script ’ = ’ yourMapScript ’ , ’ init_script ’ = ’ yourInitScript ’ , ’ combine_script ’ = ’ yourCombineScript ’ , ’ reduce_script ’ = ’ yourReduceScript ’ )
基本查询和条件 SELECT * ORDER BY balance DESC LIMIT 500 ;SELECT balance, include(’*Name’), exclude(‘lastName’)
文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈