讲解一下这个代码 ```sum(case when coalesce(ad_source,'') not in ('ADX','联运DSP') and (cast(coalesce(trim(clicktype),'0') as bigint) & 8 ) <> '8' then price_cost else 0 end) expect_acc_cost,```
时间: 2023-12-30 12:03:44 浏览: 169
sum的界面代码
这段代码主要是一个SQL语句中的一个聚合函数SUM中的CASE表达式。
CASE表达式的语法如下:
```
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
```
它的作用是根据条件进行判断并返回对应的结果。在这段代码中,CASE表达式中的条件是:
```
coalesce(ad_source,'') not in ('ADX','联运DSP') and (cast(coalesce(trim(clicktype),'0') as bigint) & 8 ) <> '8'
```
这个条件包括两个部分:
1. coalesce(ad_source,'') not in ('ADX','联运DSP'):这个部分判断ad_source是否在指定的值列表中,如果不在则返回true,否则返回false。coalesce函数是用来判断ad_source是否为null,如果为null则返回空字符串。
2. (cast(coalesce(trim(clicktype),'0') as bigint) & 8 ) <> '8':这个部分将clicktype转换为bigint类型,并与8进行按位与运算(&操作),判断结果是否等于8,如果不等于则返回true,否则返回false。trim函数是用来去掉clicktype两端的空格。
根据以上条件,如果满足条件,则返回price_cost,否则返回0。整个CASE表达式的作用是,将不满足条件的price_cost设为0,而满足条件的price_cost保持原值。
接下来,这个CASE表达式被用在了SUM函数中,表示对所有满足条件的price_cost进行求和,得到的结果存储在一个名为expect_acc_cost的变量中。
阅读全文