• mysql 划重点啦,,


    查询和某某东西完全一样时用   行子查询   group_concat(c_id  order by c_id)
    
    举例:-- 16、查询和01号同学所学课程完全一样的学生信息
    
    
    查询至少几个一样时用   列子查询   
    
    举例:-- 17、查询至少有一门课与01号同学所学课程一样的学生信息
    
    
    查询并且时   
    
    举例:-- 18、查询选修了01号课程并且也选修了02号课程的学生信息 
    
    
    在一个表中查询某一项比另一项高或者大时用自联结查询、、
    
    举例:-- 19、查询01号课程比02号课程分数高的学生信息及成绩
    
    
    查询在某一个中不在某一个中时
    
    举例:-- 20、查询选修了01号课程但是没有选修02号课程的学生信息
    
    in ............not in      或者  
    
    select stu.*
    from sc left join stu on sc.s_id= stu.s_id
    group by stu.s_id
    having sum(c_id=01)=1 and sum(c_id=02)=0;
    
    
    
    -- 22、查询各科成绩最高分,最低分,平均分,合格率:cname
    
    
    
    select c_name ,max(score),min(score),avg(score),sum(score>=60)/count(co.c_id) 合格率
    from co left join sc on sc.c_id = co.c_id
    group by co.c_id;
    

      

    -- 14、查询所有学生不同课程的成绩及平均成绩:s_id,语文,数学,英语,平均成绩
    #第一种方法
    select s_id,sum(case when c_id='01' then score else 0 end) 语文,
    			sum(case when c_id='02' then score else 0 end) 数学,
    			sum(case when c_id='03' then score else 0 end) 英语,
    			avg(score) 平均成绩
    from sc
    group by s_id;
    
    
    select stu.s_id,sum(case when c_id='01' then score else 0 end) 语文,
    			sum(case when c_id='02' then score else 0 end) 数学,
    			sum(case when c_id='03' then score else 0 end) 英语,
    			avg(score) 平均成绩
    from stu left join sc on stu.s_id=sc.s_id
    group by stu.s_id;
    
    ##第二种方法
    select s_id,sum(if( c_id='01',score ,0)) 语文,
    			sum(if( c_id='02',score ,0)) 数学,
    			sum(if( c_id='03',score ,0)) 英语,
    			avg(score) 平均成绩
    from sc
    group by s_id;
    

      

  • 相关阅读:
    POJ1204:Word Puzzles——题解
    HDU2222:Keywords Search——题解
    CF17E:Palisection——题解
    BZOJ2565:最长双回文串——题解
    POJ3974:Palindrome——题解
    接口测试的另一种方式 – 接口测试平台
    接口测试的另一种方式 – 接口测试平台
    接口测试的另一种方式 – 接口测试平台
    美团招聘-测试开发工程师
    美团招聘-测试开发工程师
  • 原文地址:https://www.cnblogs.com/manjianlei/p/11285629.html
Copyright © 2020-2023  润新知