有奖捉虫:行业应用 & 管理与支持文档专题 HOT
本文介绍条件表达式的语法和示例。
表达式
语法
说明
CASE WHEN condition1 THEN result1 [WHEN condition2 THEN result2] [ELSE result3] END
过条件判断,对数据进行归类。
IF(condition, result1)
如果 condition 为 true,则返回 result1,否则返回 null。
IF(condition, result1, result2)
如果 condition 为 true,则返回 result1,否则返回 result2。
NULLIF(expression1, expression2)
比较两个表达式的值是否相等。如果相等,则返回 null,否则返回第一个表达式的值。
TRY(expression)
捕获异常信息,使得系统继续执行查询和分析操作。
COALESCE(expression1, expression2...)
获取多个表达式中的第一个非 NULL 值。

CASE WHEN 语法

CASE WHEN 语法用于对数据进行归类。

语法

CASE WHEN condition1 THEN result1
[WHEN condition2 THEN result2]
[ELSE result3]
END

参数说明

参数
说明
condition
条件表达式。
result
返回结果。

示例

示例1

http_user_agent 字段值中提取浏览器信息,归为 Chrome、Safari 和 unknown 三种类型并计算三种类型对应的访问 PV。
* |
SELECT
CASE
WHEN http_user_agent like '%Chrome%' then 'Chrome'
WHEN http_user_agent like '%Safari%' then 'Safari'
ELSE 'unknown'
END AS http_user_agent,
count(*) AS pv
GROUP BY
http_user_agent

示例2

统计不同请求时间的分布情况。
* |
SELECT
CASE
WHEN request_time < 0.001 then 't0.001'
WHEN request_time < 0.01 then 't0.01'
WHEN request_time < 0.1 then 't0.1'
WHEN request_time < 1 then 't1'
ELSE 'overtime'
END AS request_time,
count(*) AS pv
GROUP BY
request_time

IF 语法

IF 语法用于对数据进行归类,类似于 CASE WHEN 表达式。

语法

如果 condition 为 true,则返回 result1,否则返回 null。
IF(condition, result1)
如果 condition 为 true,则返回 result1,否则返回 result2。
IF(condition, result1, result2)

参数说明

参数
说明
condition
条件表达式。
result
返回结果。

示例

计算状态码为200的请求占所有请求的比例。
* |
SELECT
sum(IF(status = 200, 1, 0)) * 1.0 / count(*) AS status_200_percentag

NULLIF 表达式

NULLIF 表达式用于比较两个表达式的值是否相等。如果相等,则返回 null,否则返回第一个表达式的值。

语法

NULLIF(expression1, expression2)

参数说明

参数
说明
expression
任何有效的标量表达式。

示例

判断 server_addrhttp_host 两个字段的值是否相同。当不相同时,返回 server_addr 字段的值。
* | SELECT NULLIF(server_addr,http_host)

TRY 表达式

TRY 表达式用于捕获异常信息,使得系统继续执行查询和分析操作。

语法

TRY(expression)

参数说明

参数
说明
expression
任何类型的表达式。

示例

当执行 regexp_extract 函数发生异常时,try函数会捕获异常信息并继续查询和分析操作,返回查询和分析结果。
* |
SELECT
TRY(regexp_extract(uri, '.*\\/(index.*)', 1))
AS file, count(*)
AS count
GROUP BY
file

COALESCE 表达式

COALESCE 表达式用于获取多个表达式中的第一个非 NULL 值。

语法

COALESCE(expression1, expression2...)

参数说明

参数
说明
expression
任何有效的标量表达式。

示例

* | select COALESCE(null, 'test')