本帖最后由 Zs_Anything 于 2014-08-16 10:17:57 编辑

解决方案 »

  1.   

    你这需要通过多个查询才能够做到。
    首先需要查询出所有的type_name和所有的feedback_date,搭建好一个二维数组后,然后再一个查询,向二维数组中去对应,没有对应到的默认值是0。
    callsum就比较容易了,sum group by一下就好了。
      

  2.   


    就是因为不想放到sql里做,以免数据量大的时候,前台响应慢
    所以sql只是sum一下,做一个查询,
    sql如下:
    select 
    a.type_name,a.feedback_date,
    a.feedbackSum,a.callSum,
    ROUND(a.feedbackSum/a.callSum*100,2) as feedbackRate
    from(
    select type_name,sum(feedback_num) as feedbackSum,sum(call_sum) as callSum,feedback_date from t_feedback_report 
    GROUP BY type_name,feedback_date
    ORDER BY TYPE_NAME,FEEDBACK_DATE
    )a最好在java里封装封装成最终结果
      

  3.   


    就是因为不想放到sql里做,以免数据量大的时候,前台响应慢
    所以sql只是sum一下,做一个查询,
    sql如下:
    select 
    a.type_name,a.feedback_date,
    a.feedbackSum,a.callSum,
    ROUND(a.feedbackSum/a.callSum*100,2) as feedbackRate
    from(
    select type_name,sum(feedback_num) as feedbackSum,sum(call_sum) as callSum,feedback_date from t_feedback_report 
    GROUP BY type_name,feedback_date
    ORDER BY TYPE_NAME,FEEDBACK_DATE
    )a最好在java里封装封装成最终结果sql的效率要比你在java里来的快
      

  4.   

    用SQL分组统计呗,应该比你用java简单的多了,况且SQL本身就是用来处理这个的,如果数据量大了,你对象用太多,反而容易内存溢出
      

  5.   

    估计sql做比你用java做效率高,你如果数据量大的话,把所有数据从数据库取到web应用中,这个也是比较耗时的啊,且不说占用大量应用内存以及计算了。而数据库处理这种是强项啊。