分可以和另外一个帖子一起接数据库是 MySql 的   传入参数为 ids 串(如1,52,53...),起始日期(字符串型:2008-12-09),终止日期(字符串型:2009-01-01)   有表 uc_class, 对应字段 classid(int型),schoolid(int 型)(对应传入的ids中的一个)   有表 uc_relation 对应字段为uid(int型),groupid(int型) 和aclevel(int型), 如果aclevl = 99, 那么groupid 就是 classid   有表 TB_app_SportInfo,对应字段为 bid,fmonth(double),检查日期(datatime型),评价(字符串型, 
                                                                  内容包含【注意是包含】有‘优秀’‘良好’‘合格’‘不合格’)   希望通过传入的ids,起始日期、终止日期(检查日期在这两者之间) 得到fmonth 分别在     3岁以下 
    3-3.5岁 
    3.5到4岁 
    4到4.5岁 
    4.5到5岁 
    5到5.5岁 
    5.5到6岁 
    6岁以上     这几个阶段中 优秀、良好、合格、不合格的人数有多少,比率是多少
结果就是利用传入的ids 得到这些ids下的全部classid的编号串 利用classid 编号串和aclevel = 99 得到 uid 编号串 利用uid 编号串 和 起始日期,终止日期得到 满足条件的记录 在满足条件的记录中根据 fmonth 进行统计和 计算 
结果不能贴图,所以只能文字大致如下: 
年龄段 3岁以下      15人      15% 
3到3.5岁    20人      20% 
3.5到4岁    30人      30% 
4到4.5岁    10人      10% 
4.5到5岁    5 人      5% 
5到5.5岁    5人      5% 
5.5到6岁    10人      10% 
6岁以上      5人      5% 

解决方案 »

  1.   


    两者之间的差别大吗?能用sql 帮我写一个吗,辛苦
      

  2.   


    主要用到  case when  then else end 
      

  3.   

    MS-SQLselect 
      fmonth,
      sum(case when fmonth when fmonth then 1 else 0 end) as 人数,
    .....
      ltrim(count(1)*100*1.0/(select count(1) from tb))+'%' as 比率
    from
      tb
    group by
      fmonth
      

  4.   


    通过
    select * from tb_app_sportinfo where babyid in (select uid from uc_relation where aclevel = 99 and groupid in
                                                   (select classid from uc_class where schoolid in (52,53)) ) 
    and f_month >= 36 and f_month < 42 
    and 检查日期 >= '2009-06-19' and 检查日期  <= '2009-12-30';可以得到数据集,就是不知如何在该数据集上得到统计结果,谢谢
      

  5.   

    建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。