• mysql 练习题


    -- 6、表中有ABC三列,当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列
    create table abc(
    	a int,
    	b int,
    	c int
    );
    
    insert into abc values(22,24,23);
    
    select * from abc;
    
    
    create database gk;
    use gk;
    
    create table gaokao
    (
    kh int(8) ,
    km   char(3),
    cj  int
    );
    use gk;
    
    insert into gaokao
    values(2006001,'语文',119),
    (2006001,'数学',108),
    (2006002, '物理',142),
    (2006001, '化学',136),
    (2006001,	'物理',127),
    (2006002,	'数学',149),
    (2006002, '英语'	,110),
    (2006002, '语文'	,105),
    (2006001, '英语'	,98),
    (2006002, '化学'	,129);
    
    select * from gaokao ;
    
    -- 输出高考理科综合总分在300以上且所有科目成绩在600以上的考生的准考证号,并依据总成绩从高到低排序。
    select kh,cj from gaokao where km='数学';
    select kh,cj from gaokao where km='化学';
    select kh,cj from gaokao where km='物理';
    
    ##第一步 查询理科综合成绩大于300的学生
    
    select a.kh,a.cj 数学,b.cj 化学,c.cj 物理,sum(a.cj+b.cj+c.cj) 综合成绩
    from (select kh,cj  from gaokao where km='数学') a 
    left join (select kh,cj  from gaokao where km='化学') b on a.kh=b.kh 
    left join (select kh,cj  from gaokao where km='物理') c on a.kh=c.kh
    group by kh
    having 综合成绩>300;
    
    
    ##第二步  子查询并且总分在600分以上的同学
    select kh
    from(
    select a.kh,a.cj 数学,b.cj 化学,c.cj 物理,sum(a.cj+b.cj+c.cj) 综合成绩
    from (select kh,cj  from gaokao where km='数学') a 
    left join (select kh,cj  from gaokao where km='化学') b on a.kh=b.kh 
    left join (select kh,cj  from gaokao where km='物理') c on a.kh=c.kh
    group by kh
    having 综合成绩>300) z
    where z.kh in
    (select kh
    from gaokao
    group by kh
    having sum(cj)>600);
    

      

  • 相关阅读:
    写一个列表生成式,产生一个公差为11的等差数列
    如果对方网站反爬取,封IP了怎么办?
    为什么会选择redis数据库?
    你是否了解谷歌的无头浏览器?
    遇到的反爬虫策略以及解决方法?
    常见的HTTP方法有哪些?
    遇到反爬机制怎么处理?
    列举网络爬虫所用到的网络数据包,解析包?
    python中的关键字yield有什么作用?
    如下代码输出的是什么?
  • 原文地址:https://www.cnblogs.com/manjianlei/p/11298722.html
Copyright © 2020-2023  润新知