zoukankan      html  css  js  c++  java
  • SQL语句(十四)子查询

    --1. 使用IN关键字
    
    --例1 查询系别人数不足5人的系别中学生的学号、姓名和系别
    
    --系别人数不足5人的系别  ==>选择条件
    select Sdept 
    from Student
    Group by Sdept
    Having Count(*) < 5
    
    --显示这些系别的学生信息
    Select sno, sname, sdept
    From Student
    WHERE sdept IN (
                select Sdept 
                from Student
                Group by Sdept
                Having Count(*) < 5
                )
    
    
    --2. 使用EXISTS关键字
    
    --例2 如果“MA"系别有人的成绩大于等于90
    --就把全系别的学号,姓名、班级、课程号、成绩显示出来
    
    --查询"MA"系别成绩大于90的学生信息
    select *
    from Student
    INNER JOIN SC ON Student.Sno = SC.Sno
    WHERE Student.Sdept = 'MA' and SC.Grade >= 90
    
    --结果有,则显示全班信息
    select Sdept, SC.Sno, Sname, Cno, Grade
    from Student
    INNER JOIN SC ON Student.Sno = SC.Sno
    WHERE Student.Sdept = 'MA' and 
    EXISTS (      --exists 里是一个子查询
            select *
            from Student
            INNER JOIN SC ON Student.Sno = SC.Sno
            WHERE Student.Sdept = 'MA' and SC.Grade >= 90
            )
    --(4)所有课程都被选修的学生学号
    select Sno
    From Student
    Where not EXISTS
        (
            Select *
            From Course
            where not Exists 
                (
                    Select *
                    From SC
                    where Sno = Student.Sno
                          and Cno = Course.Cno
                )
        )
    --3. 比较运算
    
    --例3 显示航天班成绩在平均成绩以上的人的
    --班级、学号、姓名、课程号和成绩
    
    --所有参加考试的人的所有课程的总平均
    
    select AVG(Grade)
    from SC
    
    --平均成绩以上的人的信息
    select S.Sdept, S.Sno, S.Sname, SC.Cno, SC.Grade
    from Student as S
    INNER JOIN SC on S.Sno = SC.Sno
    WHERE SC.Grade > ANY(     -- any, 表示集合里头的任何一个都可以
                        select AVG(Grade)
                        from SC
                        ) AND S.Sdept = 'IS'
    
    --例4 查询学生的班级数
    
    --首先, 查询学生来自哪些不同的班级
    --该查询的结果,像是统计的数据源
    SELECT distinct Sdept
    From Student
    
    --然后统计这个的个数
    --把这个结果看作类似一个表一样
    --写在FROM子句中
    Select count(*) as 班级数
    FROM (
        --查询的是哪些班级
        SELECT distinct Sdept
        From Student 
        ) AS S
  • 相关阅读:
    OC与JavaScript的交互
    号码运商判断
    iOS 适配https(AFNetworking3.0为例)
    UIlabel的字体自适应属性
    iOS10遇到有推送的Demo真机报错的解决
    UIView的setNeedsDisplay和setNeedsLayout
    ubuntu---设置路径时,profile和bashrc区别
    python---类的定义和使用
    ubuntu---鼠标变成空心十字架
    python--- 遍历一个图片文件夹 并 输出到txt文件
  • 原文地址:https://www.cnblogs.com/douzujun/p/6627103.html
Copyright © 2011-2022 走看看