分类分级数据统计

主题

本文主要分享一下,涉及到以下两种数据情况,如何写统计。

情况1:一个字段包含多个级别,例如:1,2,3 。这种情况如何转化为中文

情况2:如果将多个字段合并展示,例如:字段1和字段2合并展示

具体示例如下,以下仅为展示具体情况,具体的字段含义不太准确

1.表结构

CREATE TABLE `t_course` (
  `id` int(12) NOT NULL COMMENT '主键',
  `course_level` varchar(20) DEFAULT NULL COMMENT '1初级2中级3高级',
  `open_student` int(1) DEFAULT NULL COMMENT '面向学生,1是,0否',
  `open_teacher` int(1) DEFAULT NULL COMMENT '面向老师,1是,0否',
  `open_patriarch` int(1) DEFAULT NULL COMMENT '面向家长,1是,0否',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2.数据库数据

3.统计需要的展示效果

4.SQL编写

首先需要建立一张课程等级字典表,如下:

CREATE TABLE `t_level_dict` (
  `id` int(2) NOT NULL COMMENT '主键',
  `level_code` int(1) DEFAULT NULL COMMENT '等级编码',
  `level_name` varchar(10) DEFAULT NULL COMMENT '等级名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

字典表的数据如下:

然后开始我们的SQL编写,SQL如下:

select ( 
select GROUP_CONCAT(level_name SEPARATOR ',')  from t_level_dict t2 where FIND_IN_SET(t2.ID,t1.course_level) ) as '课程等级',
CONCAT(IF(t1.open_student != '0','学生,',''),IF(t1.open_teacher != '0','老师,',''),IF(t1.open_patriarch != '0','家长','')) as '面向对象'
from t_course t1

可以看到效果如下:

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值