最近在牛客网刷sql题的时候,认识了COALESCE()函数,打算做一个小记录。
题目如下:
一开始关于题解我做了一些记录,最初的想法是用UNION ALL,
提交通过,后面想尝试其他方法时查找资料发现还可以用COALESCE()函数。用法如下:
coalesce (expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。
sql语句:
当age为null值时,返回1,否则将返回age的真实值。
当第一个参数age不为null时,不论第二个参数age2是否为null值,都只返回参数age的真实值,当age为null且age2不为null时,返回参数age2的真实值;只有当第一二个参数均为null值时,才返回1。
代码:
提交结果如下:
此外,通过这道题还学到了另外一个知识点:WITH ROLLUP
with在sql语句中定义在group by之后,当需要对数据库进行分类统计的时候,往往会用上group by进行分组。而在group by后面还可以加入with cube或with rollup等关键字对数据进行汇总。不过这个cube在mysql中并不适用。
with rollup函数是对聚合函数进行求和,且是对group by后的第一个字段进行分组计算。