zoukankan      html  css  js  c++  java
  • 第十一章

     “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。
    SELECT列表中只能包含:
    1.被分组的列
    2.位每个分组返回一个值的表达式,如聚合函数
    按照年级分组
    SELECT  GradeId,count(*)  AS  人数
    FROM  student
    GROUP  BY  GradeId
    --案例1:统计每学期男女同学的人数
    --按照学期分组
    --按照性别分组
    SELECT  COUNT(*) AS 人数,GradeId AS 学期,Gender AS 性别
    From Student
    GROUP BY GradeId,Gender
    ORDER BY GradeId
    --说明:可以按照多列分组,列名使用逗号隔开 
    --案例2:如何过得总人数超过15人的年级
    SELECT COUNT(*) AS 总人数,GradeId AS 年级
    FROM Student
    Group by Gradeid
    Having COUNT(*)>4
    --说明:where 列名条件  Having 聚合函数条件,Having一般和Group by连用,位置固定
    WHERE与HAVING对比
    WHERE子句:
    用来筛选FROM子句中指定的操作所产生的行
    GROUP BY子句:
    用来分组 WHERE 子句的输出
    HAVING子句:
    用来从分组的结果中筛选行
    ---案例1:统计平均分大于60分 的课程号和平均分
    SELECT SubjectNO AS 课程号,AVG(SubjectResult) AS 平均分
    From Result
    Where SubjectResult>=60




    常用的表连接查询
    1.内连接(INNER JOIN)
    2.外连接
     2.1左外连接(LEFT JOIN)
     2.2右外连接(RIGHT JOIN)
    3.内连接
    内连接使用比较运算符根据每个表的通用列中的值匹配两个表中的行
    --案例:使用内连接完成 查询学员姓名,科目号和分数
    --表连接: 主键列=外键列
    SELECT s.studentName AS 姓名,SubjectNo as 科目号,StudentResult AS 分数
    FROM Student AS s,Result AS R
    WHERE s.StudentNo=r.Result
    /*表连接:
     格式:SELECT 表2.列1,表2.列2,表1.列名2
           FROM 表1 AS 别名,表2 AS 别名
           WHERE 表1.主键列=表2.外键列
    */
    --使用内连接方式完成
      SELECT s.StudentName AS 姓名,SubjectNo as 科目号,StudentResult AS 分数
      FROM Student AS s
      INNER JOIN result AS r
      ON s.StudentNO=r.Result
    /*
      SELECT 表2.列名1,表2.列名2,表1.列名3
      FROM 表1 AS 别名
      INNER JOIN 表2
      ON 表1.主键列=表2.外键列
    */
    4.外连接
     4.1.左外连接
      --左外连接
      --查询所有学生的考试成绩和姓名,科目号
      --方法1:
      SELECT StudentName AS 姓名,SubjectNo AS 科目号,StudentResult AS 成绩
      FROM Student
      left ourer join Result
      on student.studentNo=result.studentNo
        
      --方法2:
      SELECT StudentName AS 姓名,SubjectNo AS 科目号,StudentResult AS 成绩
      FROM Result
      left ourer join Student
      on student.studentNo=result.studentNo

      主表(左表)Student中的数据逐条匹配表Result中的数据
      1.匹配,返回到结果集
      2.无匹配,NULL值返回到结果集

      /*
       SELECT 
       FROM 主表
       LEFT OUTER JOIN 从表
       ON 主表.通用列=从表.通用列
      */
  • 相关阅读:
    将python list数据结果存为html
    英文分词对比nltk vs spacy
    dict读取字典的第一个值-python
    分批查询数据库数据存入文件
    jupyter lab中显示gym的游戏动图
    模型融合
    读取csv中某列转为数字,顺序不变
    tensorflow和pytorch中的自定义网络层理解
    【小白刷题之路Day31】leetcode768. 最多能完成排序的块 II (动态规划、单调栈(没弄懂))
    【小白刷题之路Day31】leetcode769. 最多能完成排序的块(滑动窗口法、特殊使用、极致优化)
  • 原文地址:https://www.cnblogs.com/1287758807cjh/p/7745890.html
Copyright © 2011-2022 走看看