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

这个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条)

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大