coalesce函数

coalesce

COALESCE是一个函数,coalesce (expression_1, expression_2, …,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。

SQL实例

select coalesce(success_cnt, 1) from tableA

当success_cnt 为null值的时候,将返回1,否则将返回success_cnt的真实值。

select coalesce(success_cnt,period,1) from tableA

当success_cnt不为null,那么无论period是否为null,都将返回success_cnt的真实值(因为success_cnt是第一个参数),当success_cnt为null,而period不为null的时候,返回period的真实值。只有当success_cnt和period均为null的时候,将返回1。

with rollup
with在sql语句中定义在group by之后。当需要对数据库数据进行分类统计的时候,往往会用上groupby进行分组。而在groupby后面还可以加入withcubewithrollup等关键字对数据进行汇总。不过这个cube在mysql中并不适用。

使用 WITH ROLLUP,此函数是对聚合函数进行求和,注意 with rollup是对 group by 后的第一个字段,进行分组计算。

当使用WITH ROLLUP子句时,查询的GROUP BY子句中的每个列都会生成一个额外的行,表示当前列的汇总值。这些汇总行按照GROUP BY子句中列的顺序进行排序,且每个汇总行都会提供该列的聚合值。

这个功能非常有用,可以方便地将分组数据的汇总值显示在查询结果中,而不需要执行额外的聚合查询。下面是一个示例来说明WITH ROLLUP的作用:

假设我们有一个销售表sales,包含product、category和quantity三个列。我们希望计算每个产品在每个类别中的销售总量,并在结果中包括类别和总计行。

使用WITH ROLLUP,我们可以编写以下查询:

SELECT category, product, SUM(quantity)
FROM sales
GROUP BY category, product WITH ROLLUP;

这个查询将生成包含以下行的结果:

category | product  | SUM(quantity)
---------+----------+---------------
Cat1     | Prod1    | 10
Cat1     | Prod2    | 5
Cat1     | NULL     | 15  -- Cat1的总销售量
Cat2     | Prod3    | 8
Cat2     | Prod4    | 12
Cat2     | NULL     | 20  -- Cat2的总销售量
NULL     | NULL     | 35  -- 所有类别的总销售量

在结果中,每个类别的每个产品都显示了其对应的销售量。NULL值表示汇总行,显示了当前类别或所有类别的销售总量。
通过使用WITH ROLLUP,我们可以方便地在查询结果中生成汇总行,实现数据的汇总和分组计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值