The CASE WHEN syntax is used to classify continuous data. For example, you can use the CASE WHEN syntax to extract information from http_user_agent and classify the information into two types: Android and iOS.

``````SELECT
CASE
WHEN http_user_agent like '%android%' then 'android'
WHEN http_user_agent like '%ios%' then 'ios'
ELSE 'unknown' END
as http_user_agent,
count(1) as pv
group by  http_user_agent``````

## Examples

• Calculate the proportion of requests with status code 200 to all requests:
``````* | SELECT
sum(
CASE
WHEN status =200 then 1
ELSE 0 end
) *1.0 / count(1) as status_200_percentage``````
• Calculate the distribution of latencies:
``````* | SELECT `
CASE
WHEN latency < 10 then 's10'
WHEN latency < 100 then 's100'
WHEN latency < 1000 then 's1000'
WHEN latency < 10000 then 's10000'
else 's_large' end
as latency_slot,
count(1) as pv
group by latency_slot``````

## IF syntax

The IF syntax is logically equivalent to the CASE WHEN syntax.

``````CASE
WHEN condition THEN true_value
[ ELSE false_value ]
END``````
• if(condition, true_value)

If the condition is true, true_value is returned. Otherwise, null is returned.

• if(condition, true_value, false_value)

If the condition is true, true_value is returned. Otherwise, the false_value column is returned.

## COALESCE syntax

The COALESCE syntax returns the first non-NULL value from multiple columns.

``coalesce(value1, value2[,...])``

## NULLIF syntax

If value1 equals value2, null is returned. Otherwise, value1 is returned.

``nullif(value1, value2)``

## TRY syntax

The TRY syntax catches some of the underlying exceptions such as division by zero errors, and returns null.

``try(expression)``