分组查询

SQL可以将检索到的元组按某一条件进行分组,分组是属性值相同的为一组

  • 求每个学生的平均成绩

SELECT sn,AVG(score)
FROM sc
GROUP BY sn

先按sn进行分组,即sn相同的为一组,然后求该组中score的平均值。最后输出是按组输出,一个组为一条记录

分组过滤

当我们对结果集进行分组后,如果需要对分组进行筛选,只留下我们需要的分组,那就要用到分组过滤。

分组过滤的关键词是HAVING

  • 求不及格成绩超过两门课的同学学号

SELECT sn
FROM sc
WHERE score < 60
GROUP BY sn HAVING COUNT(*)>2

将成绩小于60分的记录按学号进行分组,然后统计每个分组中记录的条数。如果条数大于2则将学号输出。

  • 求有两门以上课程不及格的学生学号和他的平均成绩

SELECT sn,AVG(score)
FROM sc
WHERE sn IN(
    SELECT sn
    FROM sc
    WHERE score<60
    GROUP BY sn HAVING COUNT(*)>2
    )
GROUP BY sn;

SQL语言中的并交差


在关系代数中有集合的并,交,差运算,SQL语言也能实现相应的运算。

SQL语言;并运算(UNION),交运算(INTERSECTS),差运算(EXCEPT)

基本语法: 子查询 {UNION [ALL] | INTERSECT [ALL] | EXCEPT [ALL]} 子查询

注意:MySQL中只有UNION操作

当没有ALL时结果集中会删除重复元组,而有ALL则会保留

  • 求学过002号课的同学或者学过003号同学的学号

SELECT sn FROM sc WHERE cn="003"
UNION
SELECT sn FROM sc WHERE cn="002"

  • 求即学过002又学过003课程的同学学号

SELECT sn FROM sc WHERE cn="002"
INTERSECTS
SELECT sn FROM sc WHERE cn="003"

查询小结

SELECT语句完整定义(::==表示定义)

在面向对象/对象关系数据库中SQL将转化为OQL,这个可以作为了解。

SQL复杂查询和视图(2)的更多相关文章

  1. 第二天,导出文件sql,查询,视图view,聚合函数,反模式,字符串处理函数

    //把数据库导出到脚本文件mysqldump -uroot -p1234 --databases abc > d:/a/abc.sql CREATE TABLE stud( id INT PRI ...

  2. SQL复杂查询和视图

    子查询 现实中,很多情况下需要进行下述条件判断 某一元素是否是某一集合成员 某一集合是否包含另一集合 测试集合是否为空 测试集合是否存在另一元组 子查询是出现在WHERE子句中的SELECT语句被称为 ...

  3. SHELL中执行Oracle SQL语句查询性能视图

    数据库日志是否报错信息 vi check_log.sh #!/bin/bash # Created : 2019.10.10 # Updated : # Author : # Description ...

  4. SQL Server-聚焦使用视图若干限制/建议、视图查询性能问题,你懵逼了?(二十五)

    前言 上一节我们简单讲述了表表达式的4种类型,这一系列我们来讲讲使用视图的限制,简短的内容,深入的理解,Always to review the basics. 避免在视图中使用ORDER BY 上一 ...

  5. 转发:使用sql命令查询视图中所有引用的基础表

    转自:使用sql命令查询视图中所有引用的基础表 使用sql命令查询视图中所有引用的基础表 之前有写过如何利用sql查询视图中所有引用的表发现这个方法并不能查出视图中所有的基础表,如果视图中有嵌套视图就 ...

  6. SQL语句查询数据库的触发器、存储过程、视图以及表的SQL语句

    Sql Server数据库用SQL语句查询方法如下: select name from sysobjects where xtype='TR' --所有触发器 select name from sys ...

  7. Sql Server的艺术(六) SQL 子查询,创建使用返回多行的子查询,子查询创建视图

    子查询或内部查询或嵌套查询在另一个SQL查询的查询和嵌入式WHERE子句中. 子查询用于返回将被用于在主查询作为条件的数据,以进一步限制要检索的数据. 子查询可以在SELECT,INSERT,UPDA ...

  8. SQL Server -- 回忆笔记(四):case函数,索引,子查询,分页查询,视图,存储过程

    SQL Server知识点回忆篇(四):case函数,索引,子查询,分页查询,视图,存储过程 1. CASE函数(相当于C#中的Switch) then '未成年人' else '成年人' end f ...

  9. 数据库系统学习(七)-SQL语言之复杂查询与视图

    第七讲 SQL语言之复杂查询与视图 基本内容 子查询 IN与NOT IN谓词子查询 判断某一表达式的值是否在子查询的结构中 非相关子查询 相关子查询 theta some /theta all谓词子查 ...

随机推荐

  1. Android设置AlertDialog点击按钮对话框不关闭(转)

    (转自:http://blog.csdn.net/winson_jason/article/details/8485524) 当我们在用到Android alertDialog创建对话框 的时候,我们 ...

  2. Debian deb源方法升级PHP软件包

    学习Linxu以来,一直坚持编译方式安装软件包,貌似圈子里面也是都倾向于编译,可是搜索到的编译方法都是一堆复制粘贴来的指令, 每个人都这么编译, 却几乎没有人去写明那些五花八门的编译指令代表了什么,是 ...

  3. Javascript字数统计

    字数统计功能,原理是给textarea添加onKeyup事件,事件读取textarea内容并获得长度,并赋值给统计字数的那个文本节点,这里有一点要注意的是添加onKeypress和onKeydown事 ...

  4. vc6.0快捷键大全

                                                                转载! 按下Alt  键不放,点击鼠标左键拖动,可以选择文本块.可选择列:    ...

  5. [译] 企业级 OpenStack 的六大需求(第 3 部分):弹性架构、全球交付

    全文包括三部分: 第一部分:API 高可用和管理以及安全模型 第二部分:开放架构和混合云兼容 第三部分:弹性架构和全球交付 需求 5 - 扩展.弹性和性能 企业级的内容很丰富.过去,企业级往往和高可靠 ...

  6. Spring学习之第一个Spring MVC程序(IDEA开发环境)

    回顾Java平台上Web开发历程来看,从Servlet出现开始,到JSP繁盛一时,然后是Servlet+JSP时代,最后演化为现在Web开发框架盛行的时代.一般接触到一个新的Web框架,都会想问这个框 ...

  7. Learning Spark: Lightning-Fast Big Data Analysis 中文翻译

    Learning Spark: Lightning-Fast Big Data Analysis 中文翻译行为纯属个人对于Spark的兴趣,仅供学习. 如果我的翻译行为侵犯您的版权,请您告知,我将停止 ...

  8. ural One-two, One-two 2

     One-two, One-two 2 Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u ...

  9. poj2580 Super Memmo

    Description Your friend, Jackson is invited to a TV show called SuperMemo in which the participant i ...

  10. HTML 学习笔记 CSS样式(相对定位 绝对定位)

    CSS相对定位 设置为相对定位(relative)的元素会偏移某个距离.元素仍保持其未定位前的形状,他原本所占的空间仍然保留 CSS相对定位 相对定位是一个非常容易掌握的概念,如果对一个元素进行相对定 ...