站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题在公司实习,Web开发碰到棘手问题,请大哥们指教[关于ArrayList]

在公司实习,Web开发碰到棘手问题,请大哥们指教[关于ArrayList]

摘要: 在公司实习,Web开发碰到棘手问题,请大哥们指教[关于ArrayList]


PLATDATE PLATTIME COUNT
-------- -------- -----------
20060821 15 7
20060821 16 9
20060821 17 2
20060821 18 8
20060822 09 3
20060822 10 6
20060822 11 8
20060822 14 4
20060822 15 3
20060822 17 5
20060822 18 1
20060823 14 3
20060823 16 6
20060823 17 8
20060824 15 7
20060824 18 1
20060825 15 4

以上是数据库中的某个查询得到的结果,整个结果可以把它认为是一个list,每行就对应list中的一个bean。这个bean有count00-count23总共24个关于count的属性。
比如第一条记录的意思是:list中的第一个bean的属性count15=7,属性platdate="20060821",其他属性为null。
这个list并不是我要求的形式,我要返回的newlist应该含有比较少的元素,把上面这个list中相同日期的记录中的属性“合并”掉。newlist应该是
PLATDATE COUNT
-------- -----------
20060821 26(比如这一行:这个bean中属性platdate="20060821",count15=7,count16=9,count17=2,count18=8)
20060822 30(...)
20060823 17(...)
20060824 8(...)
20060825 4(...)

我说了半天可能没说明白!但是有哪位神能看懂一定要帮一下啊,先谢谢了!在线期盼中.


在SQL中就可以消除重复的行啊


你要显示什么效果呢?


我想的笨方法是按日期分组 然后遍厉这个List
对于相同日期的把对应属性赋值 完了再放到新List中。
比如我new一个新的bean然后对相同日期属性的bean做循环。如果对应bean的非日期属性不为null的话就把相应的属性值赋给这个新bean。再把这个新的bean添加到newList中。


sql里面有个分组统计:
group by


他要的是不是把这些分组后的字段显示在一个td里啊
要什么需求先说明白嘛


给个例子:

group by
分组
通用数据库具有基于表的特定列对数据进行分析的能力。
可按照在 GROUP BY 子句中定义的组对行进行分组。以其最简单的形式,组由称为分组列的列组成。 SELECT 子句中的列名必须为分组列或列函数。列函数对于 GROUP BY 子句定义的每个组各返回一个结果。下列示例产生一个列出每个部门编号的最高薪水的结果:
SELECT DEPT, MAX(SALARY) AS MAXIMUM
FROM STAFF
GROUP BY DEPT
此语句产生下列结果:
DEPT MAXIMUM
------ ---------
10 22959.20
15 20659.80
20 18357.50
38 18006.00
42 18352.80
51 21150.00
66 21000.00
84 19818.00
注意:计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY)。
将 WHERE 子句与 GROUP BY 子句一起使用
分组查询可以在形成组和计算列函数之前具有消除非限定行的标准 WHERE 子句。必须在GROUP BY 子句之前指定 WHERE 子句。例如:
SELECT WORKDEPT, EDLEVEL, MAX(SALARY) AS MAXIMUM
FROM EMPLOYEE
WHERE HIREDATE > '1979-01-01'
GROUP BY WORKDEPT, EDLEVEL
ORDER BY WORKDEPT, EDLEVEL

结果为:
WORKDEPT EDLEVEL MAXIMUM
-------- ------- -----------
D11 17 18270.00
D21 15 27380.00
D21 16 36170.00
D21 17 28760.00
E11 12 15340.00
E21 14 26150.00
注意:在 SELECT 语句中指定的每个列名也在 GROUP BY 子句中提到。未在这两个地方提到的列名将产生错误。GROUP BY 子句对 WORKDEPT 和 EDLEVEL 的每个唯一组合各返回一行。
在 GROUP BY 子句之后使用 HAVING 子句
可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。为此,在GROUP BY 子句后面包含一个 HAVING 子句。 HAVING 子句可包含一个或多个用 AND 和 OR 连接的谓词。每个谓词将组特性(如 AVG(SALARY))与下列之一进行比较:
该组的另一个特性
例如:
HAVING AVG(SALARY) > 2 * MIN(SALARY)
常数
例如:
HAVING AVG(SALARY) > 20000
例如,下列查询寻找雇员数超过 4 的部门的最高和最低薪水:
SELECT WORKDEPT, MAX(SALARY) AS MAXIMUM, MIN(SALARY) AS MINIMUM
FROM EMPLOYEE
GROUP BY WORKDEPT
HAVING COUNT(*) > 4
ORDER BY WORKDEPT
此语句产生下列结果:
WORKDEPT MAXIMUM MINIMUM
-------- ----------- -----------
D11 32250.00 18270.00
D21 36170.00 17250.00
E11 29750.00 15340.00
有可能(虽然很少见)查询有 HAVING 子句但没有 GROUP BY 子句。在此情况下,DB2 将整个表看作一个组。因为该表被看作是单个组,所以最多可以有一个结果行。如果 HAVING 条件对整个表为真,则返回选择的结果(该结果必须整个由列函数组成);否则不返回任何行。



引用楼主“有哪位神能看懂一定要帮一下啊”,这么多神出来了,我没有到神的高度,还是闪吧。


先谢谢大家这么热情!其实我的要求说的还算清楚,plattime在数据库中其实是记录一天24小时时间的,但是他在我做的这个任务中的作用是把与于他的值如00,01...23对应的,记录中的bean的属性如count00,count01...count23的进行修改。给你们再说得细我就更说不清楚了,因为用到公司的框架,很多细节无法说明白。只要按要求做就是了。
我慢慢看看大家的解答,如果经过验证是对的就加分了。因为快下班了,如果试验某人的成功应该会在明天上班时送分。谢谢各位了!


List list=new ArrayList();
String date="";
while(rs.next()){
MyBean my=null;
if(date.equals(rs.getString("PLATDATE"))){
my=(MyBean)list.get(list.size()-1);
my.setCount(my.getCount()+rs.getInt("COUNT"));
}else{
date=rs.getString("PLATDATE");
my=new MyBean();
my.setCount(rs.getInt("COUNT"));
my.setDate(date);
}
//给24个count赋值
my.setCount00(rs.getInt("PLATTIME"));
}


我们用的是displayTag1.1的显示框架,表格是自动生成的!不是拼凑<tr><td>出来的。
而且做到一半了,我列那个数据库表仅仅是为了说明这个待处理的list的结构,而不是求sql语句。我们用到的sql语句是定好了的,放在框架的某配置文件中,我们只能对他产生的list进行过滤达到自己要求的结果,并不能修改这个sql语句。


谁会就给出点主意啊~
说白了是对一个list的过滤,产生一个newlist,路过的高人仔细帮我看看啊


List list=new ArrayList();
String date="";
while(rs.next()){
MyBean my=null;
if(date.equals(rs.getString("PLATDATE"))){
my=(MyBean)list.get(list.size()-1);
my.setCount(my.getCount()+rs.getInt("COUNT"));
}else{
date=rs.getString("PLATDATE");
my=new MyBean();
my.setCount(rs.getInt("COUNT"));
my.setDate(date);
}
//给24个count赋值
my.setCount00(rs.getInt("PLATTIME"));
}
试试我给你的方法撒


问题已经解决。
自己弄出来了,步骤比较烦琐,程序不方便贴上来。
以上各位高人说得都不完全对,酌情散分吧。Thanks to lip009(深蓝忧郁),seesea10523。谢谢大家的帮忙。


分已散。


↑返回目录
前一篇: 问个关于javabean的初级问题.
后一篇: 关于javascript与java传数值参数的问题-很紧急!!!