java计数函数count_SQL语句count统计函数Echarts展现数据信息

count统计非空

进行对数据表中的某一个属性的查询和统计,运用group by进行分组后,使用count进行统计。

javascript

好比,经过统计下面表中的学时信息。

java

68073d4bd03358628f8fe5b875778522.png

使用了以下的SQL语句:

select trainHours as groupitemnum,count(trainHours)as groupnum from enchangetrain group by trainHours。

web

1563f8b9ea813f29a40bb2e73c49f97a.png

因为在实际状况中,用户所要统计的信息不必定是trainHours属性,也有多是带有null属性列的trainAddress,若是此时才用一样的方法进行统计,则统计不出来空属性列。每每带有null的空属性列也要进行统计出来。

select trainAddress as groupitemnum,count(trainAddress)as groupnum from enchangetrain group by trainAddress

若是用上述的方法会出现如下结果:

ajax

632b610bd188532a4db61c3698e88f32.png

可是在以上的图表信息中,咱们能够看到,trainAddress属性为null的值不止一个,咱们这时应该用count一个非空的属性。

spring

修改后的SQL代码以下:

数据库

select trainAddress as groupitemnum,count(trainNo)as groupnum from enchangetrain group by trainAddress

json

效果截图以下所示:

session

2eef42e7a45482d830342a8c9f18882d.png

前台部分代码

前台代码实例以下:

app

提高培训

在线培训

短时间培训

教学评价

单科进修

主讲人

学时

性别

工做单位

职称

学历

年龄

状态

年份

查询

js代码:

function getStatisticDataList()

{

var trainType=document.getElementById("trainType").value;

var groupBy=document.getElementById("groupBy").value;

var data1=[];

var data2=[];

$.ajax({

url: "/getStatisticDataList3",

type: "post",

data: {"trainType":trainType,"groupBy":groupBy},

datatype: "json",

success: function (res) {

for(var i in res){

data1.push(i);

data2.push(res[i]);

}

myChart.setOption(option);

//myChart是一个准备好的echarts的dom

}

})

}

mapper代码以下:

echarts

@Select("select ${groupname} as groupitemnum,count(trainNo) as groupnum from ${trainname} group by ${groupname}")

public List groupitemnum(@Param("trainname") String trainname,@Param("groupname") String groupname);

HashMap进行put非空

经过获取前台用户输入的表名和索要查询的属性进行数据库的查询,并将查询结果展现在前台页面。map进行put是不可以put空值,咱们须要进行一个if的判断。

@RequestMapping(value = "/getStatisticDataList3",method = {RequestMethod.GET, RequestMethod.POST})

@ResponseBody

public Map groupdata(HttpServletRequest request,HttpSession session){

String groupname=request.getParameter("groupBy");

String trainname=request.getParameter("trainType");

String trainname1="";

session.setAttribute("groupname",groupname);

session.setAttribute("trainname",trainname);

HashMap mapenchange=new HashMap();

mapenchange.put("学时","trainHours");

mapenchange.put("主讲人","trainSpeaker");

mapenchange.put("性别","teacherGender");

mapenchange.put("工做单位","workUnit");

mapenchange.put("职称","teacherTitle");

mapenchange.put("学历","educationBackground");

mapenchange.put("年龄","teacherAge");

mapenchange.put("状态","teacherState");

mapenchange.put("年份","trainSpeaker");

if(trainname.equals("enchangetrain")) {

switch (groupname) {

case "学时":

trainname1 = (String) mapenchange.get("学时");

break;

case "主讲人":

trainname1 = (String) mapenchange.get("主讲人");

break;

case "性别":

trainname1 = (String) mapenchange.get("性别");

break;

case "工做单位":

trainname1= (String) mapenchange.get("工做单位");

break;

case "职称":

trainname1= (String) mapenchange.get("职称");

break;

case "学历":

trainname1= (String) mapenchange.get("学历");

break;

case "年龄":

trainname1= (String) mapenchange.get("年龄");

break;

//

case "状态":

trainname1 = (String) mapenchange.get("状态");

break;

case "年份":

trainname1= (String) mapenchange.get("年份");

break;

}

}

Map map=new HashMap<>();

List groupitemnum=adminService.groupitemnum(trainname,trainname1);

for (GroupInfo groupinfo:groupitemnum) {

// if (groupinfo.getGroupitemnum()==null){

// groupinfo.setGroupitemnum("无状态");

// }

map.put(groupinfo.getGroupitemnum(),groupinfo.getGroupnum());

}

return map;

}

上述代码,咱们在选中 提高培训 和 工做单位属性时, 在IDEA中会产生如下错误:

Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Null key for a Map not allowed in JSON (use a converting NullKeySerializer?); nested exception is com.fasterxml.jackson.core.JsonGenerationException: Null key for a Map not allowed in JSON (use a converting NullKeySerializer?)

就是由于,put的时候key是null值产生错误。咱们能够添加一个if的判断,将null值进行改变,能够加入如下代码:

Map map=new HashMap<>();

List groupitemnum=adminService.groupitemnum(trainname,trainname1);

for (GroupInfo groupinfo:groupitemnum) {

if (groupinfo.getGroupitemnum()==null){

groupinfo.setGroupitemnum("无状态");

}

map.put(groupinfo.getGroupitemnum(),groupinfo.getGroupnum());

}

return map;

最终的运行结果以下:

5ab9627ae31bf8f7ac1a02860e3a76bc.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值