SQL代码:

select 
cast(allcardid as bigint) as allcardid,
is_lord_won,
if(lord_total_bomb_cnt=0,-1,lord_used_bomb_cnt*1.0/lord_total_bomb_cnt) as lord_used_bomb_ratio,
if(farmer_total_bomb_cnt=0,-1,farmer_used_bomb_cnt*1.0/farmer_total_bomb_cnt) as farmer_used_bomb_ratio
from dwd.dwd_ai_round_basic_hi 

解读这句SQL

if(lord_total_bomb_cnt=0,-1,lord_used_bomb_cnt*1.0/lord_total_bomb_cnt) as lord_used_bomb_ratio
if (lord_total_bomb_cnt=0):
	lord_used_bomb_ratio=-1
else:
	lord_used_bomb_ratio=lord_used_bomb_cnt*1.0/lord_total_bomb_cnt

if语句功能如下:

if(expr1,expr2,expr3)  

如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

if expr1:
	return expr2
else:
	return expr3
	

这与C语言中的三目运算符功能类似:

expr1 ? expr2 : expr3;

若表达式 expr1 为真,则执行 语句expr2,否则执行语句:expr3
举个例子:

x < 0 ? y = 10 : z = 20;

同:

if (x < 0)
    y = 10else
    z = 20;

更多推荐

SQL中if语句的使用