有这样一个需求,数据存放在excel中,需要进行分类、累加、求和操作,最后需要根据自定义查询条件,展现到页面上,如果用人工进行分类计算,在数据量很大的情况下,工作量可想而知。
excel中的格式如下:
编号,项目编码,项目名称,类别代码,类别名称,子类别代码,子类别名称,有效数量,无效数量,...等,需要按一定的规则分类别统计,类别有五种,分别为01(管理)、02(服务)、03(农业)、04(工业)、05(3C),其中子类别中,A开头的归属于01, C开头的归属于02,B02、B04开头的归属于03,B03、B05的归属于04,B01的归属于05
我的思路通过java解析excel把数据导入到mysql中,再利用sql进行统计,如下
SELECT
t.inst_code,
t.inst_name,
CASE
WHEN LEFT (t.type_code, 1) = 'A' THEN
'01'
WHEN LEFT (t.type_code, 1) = 'C' THEN
'02'
WHEN LEFT (t.type_code, 3) = 'B02'
OR LEFT (t.type_code, 3) = 'B04' THEN
'03'
WHEN LEFT (t.type_code, 3) = 'B03'
OR LEFT (t.type_code, 3) = 'B05' THEN
'04'
ELSE
'05'
END ,
SUM(t.effective_num)
FROM
tbl_temp_auth_num_statics t
GROUP BY
t.inst_code,
t.inst_name,
CASE
WHEN LEFT (t.type_code, 1) = 'A' THEN
'01'
WHEN LEFT (t.type_code, 1) = 'C' THEN
'02'
WHEN LEFT (t.type_code, 3) = 'B02'
OR LEFT (t.type_code, 3) = 'B04' THEN
'03'
WHEN LEFT (t.type_code, 3) = 'B03'
OR LEFT (t.type_code, 3) = 'B05' THEN
'04'
ELSE
'05'
END
查询的结果如下: