数据表table2010 中有 班级bj 总分zf等字段。请问:如何用php5.2 + mysql 4.0 显示各班总分分段?例如,有12个班,需要显示各班从 450分到600分(10分一段)的人数。如何做,效率比较高呢?谢了先~~~~

解决方案 »

  1.   

    试试这个
    select count(*) t,班级,CAST(分数/10 as SIGNED) fs from 数据
    where 分数>=450 and 分数<=600
    group by 班级,fs这是一条sql的方法,性能不知道..一条数据表示一个班级一段fs内记录
      

  2.   

    t  bj  fs  
    43 1 55 
    33 1 56 
    49 1 57 
    40 1 58 
    34 1 59 2楼的语句得出的结果好像有点问题,560分的33人?按理说应该大于590分的人数。
      

  3.   

    2楼的sql,累计或者不累计,好像都对不上。因为一个班也才60多人。是需要求累计的。文件贴不上来。
      

  4.   


    你得贴点测试数据, sql文件格式, 我们好直接运行了测试
      

  5.   

    CREATE TABLE `mytable` (
      `xh` varchar(6) NOT NULL default '',
      `zf` int(3) default NULL,
      `bj` char(2) NOT NULL default '',
    ) TYPE=MyISAM;
    INSERT INTO `mytable` (`xh`, `zf`, `bj`) VALUES
    ('30601', 607, '6'),
    ('30602', 578, '6'),
    ('30603', 349, '6'),
    ('30604', 528, '6'),
    ('30605', 619, '6'),
    ('30606', 578, '6'),
    ('30607', 588, '6'),
    ('30608', 565, '6'),
    ('30609', 551, '6'),
    ('30610', 528, '6'),
    ('30701', 522, '7'),
    ('30702', 514, '7'),
    ('30703', 555, '7'),
    ('30704', 498, '7'),
    ('30705', 476, '7'),
    ('30706', 513, '7'),
    ('30707', 495, '7'),
    ('30708', 510, '7'),
    ('30709', 501, '7'),
    ('30710', 528, '7'),
    ('30801', 509, '8'),
    ('30802', 508, '8'),
    ('30803', 492, '8'),
    ('30804', 542, '8'),
    ('30805', 470, '8'),
    ('30806', 440, '8'),
    ('30807', 445, '8'),
    ('30808', 504, '8'),
    ('30809', 457, '8'),
    ('30810', 463, '8');