zoukankan      html  css  js  c++  java
  • 连接查询和分组查询

    一、分组查询:用于统计时经常使用分组查询

    1、group by分组

    01.例如查询每个年级的总人数

    --一旦通过group by分组,那么我们只能获取组相关的信息,而不能获取组中成员的信息

    --在select后只能跟聚合函数和group by后面的列,其他列不允许

    1 select gradeid as 年级编号,COUNT(studentno) as 总人数
    2 from student
    3 group by gradeid

    聚合函数:

    sum()--count()--max() min()--avg()

    2、多列分组

    01.每个年级的男生总人数,,以及女生总人数

    1 select gradeid as  年级编号,gender as 性别,COUNT(studentno) as 总人数
    2 from student
    3 group by GradeId,Gender
    4 order by GradeId,Gender

    3、Having的使用

    01.如何查询每门课程的平均分和执行顺序

    1 select SubjectId as 课程编号,AVG(studentresult) as 平均分  --05.投影结果
    2 from Result                          --01。定位到表
    3 where SubjectId<3  --,              --02.分组前第一道过滤
    4 group by SubjectId                   --03.分组
    5 having COUNT(studentno)>3            --04.分组后第二道过滤
    6 order by 课程编号 desc               --06.最后排序

    02获取总人数超过3人的年级编号及人数

    1 select gradeid as 年级编号,COUNT(studentno) as 总人数
    2 from student
    3 group by GradeId
    4 having COUNT(studentno)>3

    注意:

    having是对分组后的数据进行第二次筛选或者过滤,也就是说没有group by就没having

    where之后不能有聚合函数

    二、连接查询

     

    连接分三种:内连接,外连接,交叉连接

    1、内联结

    --A和B两张表,A和B必须有公共字段

    --输出每个学员的姓名和成绩

    --实现方式二:where

    1 select studentname as 姓名,studentresult as 成绩,subjectname as 科目,Gradename  as 年级
    2 from student,Result,Subject,Grade
    3 where student.StudentNo=Result.StudentNo
    4 and Result.SubjectId=Subject.SubjectId
    5 and student.GradeId=Grade.GradeId

    --实现方式一:inner join on

    1 select studentname as 姓名,studentresult as 成绩,subjectname as 科目
    2 from Result inner join student
    3 on student.StudentNo=Result.StudentNo
    4 inner join Subject
    5 on Result.SubjectId=Subject.SubjectId

    2、外联结

    --外连接特点

    --对于左外连接:左边的表叫主表,查询结果会显示左表和右表中公共字段相匹配的

    --结果(内连接)外,还会将左表中在右表中找不到匹配项的记录用null值填充

    --检索所有学员的成绩,如果某个学员没有参加考试,课程及成绩用NULL值代替

    1 select studentName,studentresult,subjectname
    2 from student inner join result 
    3 on student.studentNo=result.studentNo
    4 inner join subject 
    5 on result.subjectid=subject.subjectid
    6 where subjectname='走进Java编程世界'

     

  • 相关阅读:
    WIN32窗口框架代码,完善了菜单和子窗口,纯API,可自由扩展,C语言也可以写桌面程序
    自制WINDOWS窗口框架(修改完善后实现了输入和显示功能),C+WIN-API,再也不用面对黑框框学C语言了
    定义一个判断素数的函数
    定义一元二次方程求根函数
    定义一个二维数组反置函数
    让C语言告别简陋的黑框框,WIN32窗口显示九九乘法表(纯C代码)
    C语言练习题40——将一个数组逆序输出
    c语言练习39——向数列中插入一个数
    c语言练习38——求3*3矩阵对角线之和
    js之好看的鼠标点击-光标特效
  • 原文地址:https://www.cnblogs.com/yejiaojiao/p/4943041.html
Copyright © 2011-2022 走看看