求助!JSP 如何统计学生表中某个专业的总人数?

[复制链接]
查看11 | 回复11 | 2011-5-10 06:20:28 | 显示全部楼层 |阅读模式
比如我的学生表是这样的:
stu_xh,stu_name,stu_zy
1,yq,计算机,
2,yq,工业设计
3,yq,计算机
4,yq,工业设计
5,yq,计算机
6,yq,通信工程
7,yq,计算机
8,yq,工业设计
...
我怎么样才能统计出各个专业的人数?是用一个循环语句吧?如果是list那种,要怎么统计呢?那个查询条件应该是什么?select???
回复

使用道具 举报

千问 | 2011-5-10 06:20:28 | 显示全部楼层
selectcount(1)from表明wherestu_zy=\'计算机\'
楼主是要一个sql语句吗?
如果是list的话就只能循环了
ListStudentstus=newArrayListStudent();
intcount=0;
Stringzy=\"计算机\";
for(Studentstu:stus){
if(\"计算机\".equals(stu.getZy()))
count;
}
其实这个表设计的还是有一些问题,像专业应该单独弄个外键表









<h4class=\"ask\">追问


我就用简单的jsp循环,
for(inti=0;ilist.size();i){
zybeanzyb=(zybean)list.get(i);就是这样的,可是,我应该怎么弄查询条件呢?方法?
你这个不是各个专业的循环啊,要一个一个的敲的啊,要shi了。我要的是循环那种,可以实现统计各个专业人数的
回复

使用道具 举报

千问 | 2011-5-10 06:20:28 | 显示全部楼层
我明白你的意思了,你不是要循环学生表里的某一专业的人数
而是要循环计算出所有专业的就业率对吧
统计各个专业人数的话用这个sql语句
selectstu_zy,count(1)from学生表groupbystu_zy
这个sql语句可以获得你每一个专业里有多少学生
然后你在去就业表里查询每个专业有多少就业的学生
selectstu_zy,count(1)from专业表groupbystu_zy
然后两个数值一比就是就业率了
回复

使用道具 举报

千问 | 2011-5-10 06:20:28 | 显示全部楼层
?我是,想要先统计学生表里每一个专业的所有人数,比如计算机10个,工业设计15个,xxx多少个,然后又统计,有就业信息的学生,比如计算机的5个,工业设计5个,xxx多少个,这样我就可以统计出目前,计算机这个专业的就业率是50%,工业设计33.3%等等!
我要的是50%,33.3%这样的数,可是统计的时候就不会统计了,如果是我现在说的这样,要如何统计呢?
回复

使用道具 举报

千问 | 2011-5-10 06:20:28 | 显示全部楼层
selecta.stu_zy,jiuyecount/stucountfrom(selectstu_zy,count(1)stucountfrom学生表groupbystu_zy)ainnerjoin(selectstu_zy,count(1)jiuyecountfrom就业表groupbystu_zy)bona.stu_zy=b.stu_zyorderbya.stu_zy
用这个sql语句到你的数据库里直接试一下应该可以得到的结果是左边是专业id右边是该专业的就业率,可能有些列名不对,楼主可自行修改,还有我用的Oracle数据库不知道你用的什么数据库不知道语法有没有什么不同,如果语法有问题楼主可以修改下,我在Oracle里测试了语法没有问题,并且得到了结果
回复

使用道具 举报

千问 | 2011-5-10 06:20:28 | 显示全部楼层
您能不能说具体点呢?怎么得到列数?我写了个方法,用你说的去查,运行错误啊,这个不行的吧估计。Invalidcolumnname:stu_zy。循环的
回复

使用道具 举报

千问 | 2011-5-10 06:20:28 | 显示全部楼层
stu_zy是你的专业的列名称,但是你在查询的时候是每个专业的数量,你在获取时用getString(intindex)就应该没问题了,但是你要明白,在查询完之后,你得到的ResultSet中的数据时一行一行显示的,如果你要让每一个对应的专业的列名下面显示数量,那么用存储过程就比较简单了,用JAVA例的语法做起来就有点繁琐了。才存储过程中,可以定义两个变量,专业名和对象的数量,然后再写一些简单的语法。
回复

使用道具 举报

千问 | 2011-5-10 06:20:28 | 显示全部楼层
能不能不要这么理论的碍来点具体的代码?我之前用不上ResulSet我这个是eclipse中做的,哎,单个专业的就查的话出来了,一起我就不知道怎么查了!知道代码的共享一下吧
回复

使用道具 举报

千问 | 2011-5-10 06:20:28 | 显示全部楼层
你不用写JAVa代码的,你只要知道数据库中的存储过程怎么写,那就很简单了,然后再在JAVA中调用存储过程。存储过程大概就是:定义变量,然后通过查询到的一个专业名称来查询该专业的数量,查询时用groupby专业名称列having专业名称列=你所查询到得专业名称,就可以一个个的找出每个专业所对应的数量了。
回复

使用道具 举报

千问 | 2011-5-10 06:20:28 | 显示全部楼层
您就老是讲理论的…哎…我其实不太懂这些理论的,有代码帮忙解释还好过!什么是存储过程?你要一起解释么?我怎么知道它怎么存储的啊!有没有完整点的查询代码?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行