mysql实现分组、排序、汇总

mysql实现分组、排序、汇总功能

1.问题描述:

​ 对于2个业务表中数据进行关联查询时,想实现如下报表呈现的效果,需要实现的脚本语句。

在这里插入图片描述

2.脚本编辑
select 
	c.*
from
    (select 
      	coalesce(s.dept_name,'总计') as 部门,
     	count(s.dept_name) as 资源目录数
    from op_irs_res o join stg_bmc_np_info s
    on o.source_name = s.source_name
    where s.id <=136
    group by s.dept_name
    with rollup) as c
order by field(部门,'总计'),c.资源目录数 desc
;
3.部分函数介绍
3.1 coalesce()的作用
  • 将控制替换成其他值;
  • 返回一个非空值

函数表达式: coalesce(exp_1,exp_2,…,exp_n)

功能: 依次参考各参数表达式,遇到非null值即停止并返回该值;如何所有表达式都是空值,将最终返回一个空值。

实例:

-- 1 单参数
select coalesce(user_id,A) from table1;

​ 当user_id为null值时,将返回A,否则将返回user_id的实际值。

-- 2 多参数
select coalesce(user_id,user_name,B) from table2;

​ 当user_id为null值,而user_name不为null值时,返回user_name的实际值;而user_id、user_name都为null值时,将返回 B。

3.2 order by field()的作用
  • 自定义排序

函数表示式: order by field(column, column_value ) desc

功能: 将column中的一个值前置,去掉desc则为后置

实例:

select * from table3 order by field(name,'小明') desc;

​ 此时,'小明’该值就会前置;如果desc去掉,则默认’小明’为后置。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值