Zaylour
2018-08-20 09:41
采纳率: 69.2%
浏览 937

这个sql语句应该怎么写?

图片说明

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

11条回答 默认 最新

  • 还来得及 2018-08-20 15:15
    已采纳

    特意下载了mysql。。。。。。。大兄弟
    以下实现的是静态方式,不支持你多出的 “英语”
    -- 建表
    CREATE TABLE student_info (
    id int(10) NOT NULL AUTO_INCREMENT,
    name varchar(8) DEFAULT NULL, -- 学生
    course varchar(32) DEFAULT NULL,-- 课程
    score int(10) DEFAULT NULL, -- 分数
    PRIMARY KEY (id)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 ;

    -- YW :语文,SX :数学
    insert into student_info (name,course,score) values ('zhangsan','YW',80);
    insert into student_info (name,course,score) values ('zhangsan','SX',60);
    insert into student_info (name,course,score) values ('lisi','YW',70);

    -- YW-语文,SX-数学 ,ZF-总分 ,MC-名次
    select t.name, t.YW, t.SX, (YW + SX) AS ZF ,@rownum:=@rownum+1 AS MC from (
    select std.name,
    MAX(CASE c.course WHEN 'YW' THEN ifnull(s.score,0) ELSE 0 END ) YW,
    MAX(CASE c.course WHEN 'SX' THEN ifnull(s.score,0) ELSE 0 END ) SX
    from ( select distinct name from student_info ) std
    Left Join student_info s on std.name = s.name
    Left Join (select distinct course from student_info) c on c.course = s.course
    group by std.name ) t ,(SELECT @rownum:=0) r ORDER BY ZF DESC;

    给点分吧。。。。。
    要实现你的需求,需要写动态的。。。。

    评论
    解决 无用
    打赏 举报
  • 查看更多回答(10条)

相关推荐 更多相似问题