本帖最后由 zwh5067177 于 2010-11-09 15:00:48 编辑

解决方案 »

  1.   

    select s.branch_name bname,
      sum(s.main_count) mcount,
      sum(s.config_count) ccount,
      s.BRANCH_ID
      from t_statistic s
     where s.tache_id = '3' and s.statistic_project_id = 1 and
      s.statistic_user_id in
      (182, 183, 184) and
      s.statistic_mode = 1 and
      to_char(s.statistic_date, 'yyyy-MM-dd') >= '2010-09-27' and
      to_char(s.statistic_date, 'yyyy-MM-dd') <= '2010-11-27' 
    group by s.branch_name ,s.branch_id
    order by s.branch_id;
      

  2.   

    select s.branch_name bname,
      sum(s.main_count) mcount,
      sum(s.config_count) ccount,
      s.BRANCH_ID
      from t_statistic s
     where s.tache_id = '3' and s.statistic_project_id = 1 and
      s.statistic_user_id in
      (182, 183, 184) and
      s.statistic_mode = 1 and
      to_char(s.statistic_date, 'yyyy-MM-dd') >= '2010-09-27' and
      to_char(s.statistic_date, 'yyyy-MM-dd') <= '2010-11-27'
      group by s.BRANCH_ID,s.branch_name
     order by s.branch_id
      
      

  3.   

    select s.branch_name bname,
      sum(s.main_count) mcount,
      sum(s.config_count) ccount,
      s.BRANCH_ID
      from t_statistic s
     where s.tache_id = '3' and s.statistic_project_id = 1 and
      s.statistic_user_id in
      (182, 183, 184) and
      s.statistic_mode = 1 and
      to_char(s.statistic_date, 'yyyy-MM-dd') >= '2010-09-27' and
      to_char(s.statistic_date, 'yyyy-MM-dd') <= '2010-11-27' 
    group by s.branch_name,s.BRANCH_ID
    order by s.branch_id
      

  4.   

    sum 一下 mcount 和 ccount 就可以解决啦
      

  5.   

    楼上各位语句达到了要求,但是没有考虑到这个表的执行效率问题。
     to_char(s.statistic_date, 'yyyy-MM-dd') >= '2010-09-27' and
      to_char(s.statistic_date, 'yyyy-MM-dd') <= '2010-11-27' 
    这个statistic_date列上面要是没有建函数索引,效率应该欠理想。
      

  6.   

    这样 性能 就好多了吧select s.branch_name bname,
      sum(s.main_count) mcount,
      sum(s.config_count) ccount,
      s.BRANCH_ID
      from t_statistic s
     where
      to_char(s.statistic_date, 'yyyy-MM-dd') >= '2010-09-27' and
      to_char(s.statistic_date, 'yyyy-MM-dd') <= '2010-11-27' and 
      s.statistic_user_id in  (182, 183, 184)  and
      s.tache_id = '3'  and
      s.statistic_mode = 1 and s.statistic_project_id = 1
    group by s.branch_name ,s.branch_id
    order by s.branch_id;
      

  7.   

    楼主试过真的快了吗?表示怀疑。
    在statistic_date上建立的一般索引在该SQL中不起作用,要建立关于to_char的函数索引,或者改成
    statistic_date between to_date('2010-09-27','yyyy-mm-dd') and to_date('2010-11-27','yyyy-mm-dd hh24:mi:ss')
      

  8.   

    请问下between and 和单独判断他们在执行过程中有什么区别啊?效率上差别大吗?