DROP TABLE IF EXISTS n_select;
CREATE TABLE n_select(
name varchar(10) NOT NULL default '',
count char(10) NOT NULL default '',
score_one FLOAT(3) NOT NULL default 0,
score_two FLOAT(3) NOT NULL default 0
)TYPE=MyISAM;INSERT INTO n_select values('aaa','3-17','2.7','2.4');
INSERT INTO n_select values('bbb','3-17','1.6','1.8');
INSERT INTO n_select values('ccc','3-17','0.7','0.9');
INSERT INTO n_select values('aaa','3-18','2.1','2.3');
INSERT INTO n_select values('bbb','3-18','1.5','1.4');
INSERT INTO n_select values('ccc','3-18','0.6','0.8');
INSERT INTO n_select values('aaa','3-19','2.5','2.9');
INSERT INTO n_select values('bbb','3-19','1.2','1.1');
INSERT INTO n_select values('ccc','3-19','0.3','0.7');
SQL语句的目的:通过一次查询,将count分别等于'3-17','3-18'和'3-19'的每个用户的两次成绩之和取出来,并按他们的成绩和DESC排序。最后想得到这样的数据结果:name              score
aaa               14.9
bbb               8.6
ccc               4.0

解决方案 »

  1.   

    select name,sum(score_one+score_two)
    from tb
    where count in ('3-17','3-18','3-19')
    group by name 
      

  2.   

    select name,sum(score_one+score_two) score
    from n_test
    where count in('3-17','3-18','3-19')
    group by name;
      

  3.   

    select name,sum(score_one+score_two)
    from n_select
    where `count` in ('3-17','3-18','3-19')
    group by 2 desc 
      

  4.   

    为什么它提示 Can't group on 'sum(score_one+score_two)'
      

  5.   

    select name,sum(score_one+score_two)
    from n_select
    where `count` in ('3-17','3-18','3-19')
    group by name
    order by 2 desc