假设有一个学生成绩表
字段名 说明
id 编号
name 姓名
team 班级
course 科目
等等 现在要把这表中数据先按班级分类再按人名分类,进行统计学生的平均成绩等等。要显示的表格效果大致是这样的
班级1
学生1 学生2
数学 英语 物理 数学 英语 物理
班级2
学生3 学生4
数学 英语 物理 数学 英语 物理
我想了一个用list嵌套list的方法实现 :先按班级把查询结果分类,放在两个list中,再在每个list用同样的方法在按人名分类,也放在一个list中。
public List<Users> findAll(){
Session session = HibernateSessionFactory.getSession();
List<Users> list = session.createQuery("from Users u order by u.id").list();
Iterator<Users> iter1 = list.iterator();
List allList =new ArrayList();
int begin = 0;
int end = 0;
String team = null;
while(iter1.hasNext()){
Users user = iter1.next();
if(team==null){
team = user.getTeam();
}
if(team!=null&&!team.equals(user.getTeam())){
List teamList = list.subList(begin, end);
Iterator<Users> iter2 = teamList.iterator();
List firstList = new ArrayList();
String name = null;int beg = 0;int en = 0;
while(iter2.hasNext()){
Users user_name = iter2.next();
if(name==null){
name = user_name.getName();
}
if(!name.equals(user_name.getName())){
firstList.add(teamList.subList(beg,en));
name = user_name.getName();
beg = en;
}
en++;
if(!iter2.hasNext())firstList.add(teamList.subList(beg,en));
}
allList.add(firstList);
team = user.getTeam();
begin = end;
}
end++;
if(!iter1.hasNext()){
List teamList = list.subList(begin, end);
Iterator<Users> iter2 = teamList.iterator();
List firstList = new ArrayList();
String name = null;
int beg = 0;
int en = 0;
while(iter2.hasNext()){
Users user_name = iter2.next();
if(name==null){
name = user_name.getName();
}
if(!name.equals(user_name.getName())){
firstList.add(teamList.subList(beg, en));
name = user_name.getName();
beg = en;
}
en++;
if(!iter2.hasNext()){
firstList.add(teamList.subList(beg,en));
}
}
allList.add(firstList);
}
}
return allList;
}
分享到:
相关推荐
文档中的示例代码显示了如何在一个包含混合类型(如字符串和数值)的表中执行查询,并通过不同的SQL Server版本(2000与2005)来实现对特定字段的聚合操作。 ### SQL Server 2000 版本动态字段查询 #### 1. 创建表...
例如,如果我们有一个"Products"表,其中有"ProductName", "Category"和"Price"等字段,我们可以按"Category"字段进行分类查询: ```sql SELECT * FROM Products WHERE Category='Electronics' ``` 在VB中,将这个...
这个功能主要应用于需要对具有相同属性字段值的地理对象进行分组或分类的情况。例如,假设你有一个包含城市建筑的要素类,其中有一个字段"用途",记录了每个建筑的用途(如住宅、商业、办公等)。你可以利用ARCGIS的...
"ORACLE DBA面试题(按不同类型分类)" 这篇文章将从不同的角度分类介绍 ORACLE DBA 面试题,涵盖了 SQL 调优、索引、执行计划、绑定变量、排序、表空间管理等方面的知识点。 SQL 调优 在 SQL 调优方面,文章介绍...
如果我们想要按照serialize字段的不同值来分类输出area字段中的值,可以使用以下的SQL语句: ```sql SELECT serialize, GROUP_CONCAT(area) AS areas FROM area GROUP BY serialize; ``` 执行上述SQL语句后,...
这样设计允许二级分类灵活地归属不同的一级分类。 3. **三级分类表**:三级分类是具体的产品类型,比如“苹果手机”或“华为手机”。它同样拥有`id`、`parent_id`(外键,这次指向二级分类的`id`),以及`category_...
4. **parentstr**:字符串类型字段,用于记录所有祖先分类的ID序列,方便快速查询分类的层级关系。 5. **depth**:整型字段,表示该分类处于整个分类体系中的深度。 6. **rootid**:整型字段,用于存储该分类所属的...
在C#编程中,自定义生成业务分类及所属业务信息数据字段是一项常见的需求,尤其是在开发各种业务系统时。此类设计通常涉及到数据结构、面向对象编程、数据库交互等多个方面。下面我们将详细探讨这些知识点。 首先,...
电话分类查询系统通常是为了方便用户根据不同的电话类型、服务或者地区进行快速查找和获取信息。基于ASP构建的电话分类查询系统,可以利用ASP的数据库连接功能,例如ADO(ActiveX Data Objects),与后端数据库进行...
在本项目中,我们主要探讨如何使用C++编程语言与QT框架来构建一个垃圾分类查询系统,并结合MySQL数据库进行数据存储和检索。QT是一个强大的、跨平台的开发框架,支持多种操作系统,如Windows、Linux和Mac OS等。而...
2.提高了查询的效率,仅需要输入一个文本框,切换不同的方式或范围进行查询。 3.系统的数据表设计了四个表,分别是子目录表、一级产品分类表、二级产品分类表、产品表,每个表都有其特定的字段和记录。 系统的应用...
3. **查询优化**:关注不同模型在不同查询场景下的性能差异,选择适合你项目性能要求的模型。 4. **数据一致性**:在进行插入和删除操作时,确保数据的一致性,避免出现断裂的分类链。 此外,你还可以深入研究以下...
引用无限极分类则占用更少的内存,查询效率高,但操作复杂,需要维护`path`字段,且不便于修改分类结构。 压缩包中的文件“wxj”可能是实现这两种方法的代码示例,你可以通过查看和运行这些代码加深理解。同时,...
以"ACCESS数据库分类统计.rar"为例,假设我们有一个包含员工信息和销售数据的数据库,可以先通过SQL查询按部门分类统计员工人数,再按产品类别统计销售额。易语言程序会执行这些操作,并将结果以图表或表格的形式...
本主题涉及的“行业与职位分类数据表”就是一个典型的案例,它用于存储和管理关于不同行业和职位类别的信息。这样的数据表对于人力资源管理、招聘、市场研究以及业务分析等应用场景具有很高的价值。 首先,我们来看...
这种方法通常结合栈或队列数据结构,先遍历所有分类,将所有分类放入栈或队列,然后按顺序取出,检查当前分类的父ID是否与已处理的分类ID匹配,如果匹配,则将其子分类添加到已处理分类的子节点。这种方法避免了...
通过连接和查询这个数据库,可以深入研究不同行业的产值、就业状况、增长趋势等关键指标,为宏观经济分析、政策研究、企业战略规划提供有力的数据支撑。 例如,我们可以分析第一产业(农业)、第二产业(工业和建筑...
- "数据库复制"步骤可用于在不同数据库之间迁移数据,支持多种数据库类型,可以是结构、数据或两者同时迁移。 12. Kitchen 部署与调优: - Kitchen是Kettle的工作流执行器,可以在命令行环境下运行。通过配置参数...
字段连接分为两种类型:同一记录的不同字段连接和具有相同特定字段的记录的其他字段连接。 1. 同一记录的不同字段连接 对于同一记录内的不同字段,可以使用SQL的字符串连接操作来进行连接。例如,在SQL Server中,...