分组查询

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. Windows环境下载与安装JBOSS服务器的详细图文教程

    一.JDK的安装 首先安装JDK,配置环境变量(PATH,CLASSPATH,JAVA_HOME). 可以参照:Windows环境下JDK安装与环境变量配置 二.Jboss的介绍 JBOSS是EJB的 ...

  2. 烂泥:php5.6源码安装及php-fpm配置与nginx集成

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. LNMP环境的搭建中,现在只有php没有源码安装过.这篇文章就把这个介绍下. 注意本篇文章使用的centos 6.5 64bit. 登陆centos下载 ...

  3. centos7系统下安装nodejs开发环境

    1)安装基础工具(if not exists) yum install -y net telnet tools vim wget ntp 2)同步系统时间(if necessary) ntpdate ...

  4. netbeans设置语言

    netbeans的界面语言 默认是按系统语言 设的. 想要自己指定的话,加上以下参数就可以了. 中文 --locale zh:CN 英文 --locale en:US 日文 --locale ja:J ...

  5. 理解 OpenStack + Ceph (2):Ceph 的物理和逻辑结构 [Ceph Architecture]

    本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...

  6. [转]使用Oracle SQL Developer 17410 提示无法从套接字获取更多数据如何解决

    本文转自:http://m.educity.cn/ite/1121475.html 将oracle?安装目录下的Network/admin/listener.ora文件中的 (PROGRAM = ex ...

  7. .Net程序员之Python基础教程学习----字符串的使用 [Second Day]

         在The FirstDay 里面学习了列表的元组的使用,今天开始学习字符串的使用.字符串的使用主要要掌握,字符串的格式化(C语言中我们应该都知道,Python和C语言差别不大),字符串的基本 ...

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

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

  9. Channel SDK (渠道SDK) for Unity

    渠道 英文channel,解释:商品的销售路线,也就是我们开发商(CP)都把游戏开发好了,交付给渠道帮我们运营,帮我们推广,帮我们赚钱. Android和IOS渠道 拿安卓和IOS两大平台来说,它们都 ...

  10. WAMP中phpMyAdmin登陆不了问题的解决方法

    WAMP中phpMyAdmin登陆不了问题的解决方法