一 以面向集合的思维方式来思考

公司里每个工作岗位上干了同样年数的员工列表

select  emplyee_id  from  job_history  group by  employee_id

having  min(round(months_between(start_date,end_date)/12,0))  =  max(round(months_between(start_date,end_date)/12,0));

一个顾客在订单之间的平均天数

select  (max(trunc(order_date))  -  min(trunc(order_date)))  /  count(*)  avg_days_between  from  orders  where customer_id  =  102;

二 集合运算

与联结的区别就在于联结是用来将不同表中的列组合起来形成一行。集合运算比较所输入查询的所有行并返回一个不包含重复值的行集。

union all: 返回两个集合中的所有行,包含重复。

union:     返回来自所有输入查询的不包含重复值的结果集。

minus:    返回在数据行源A中存在但是在B中不存在的数据行集

intersect:返回A和B中都存在的数据行集。

三 集合与空值

空值与非直观结果

除非显示声明,它们不会被包含在结果集中。

select  *  from  emp  where  doptno  not  in  (10,20,30)  or  deptno  is  null;

空值与group  by和order  by

默认的排序规则就是将空值放在最后。如果你想把空值放在最前面,只需要在order  by字句后面加上nulls  first

select  comm,count(*)  ctr  from  emp  group  by  comm  order  by  comm  nulls  first;

SQL是关于集合的的更多相关文章

  1. 【SQL查询】集合查询之INTERSECT

    [SQL查询]集合查询之INTERSECT 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~ ...

  2. 04 SQL是关于集合的

    面向集合去思考 要想成为写SQL语句的高级专家, 最困难的是一个转变就是从面相过程的思维方式转变到面相集合的思维方式. 首先要停止那些一次处理一行数据的过程化步骤思维, 试着把思路转移到使用类似于 “ ...

  3. SQL语句实例集合

    SQL语句实例 表操作     例 1  对于表的教学管理数据库中的表 STUDENTS ,可以定义如下: CREATE  TABLE  STUDENTS (SNO      NUMERIC (6, ...

  4. SQL记录-PLSQL集合

    PL/SQL集合 集合是一个有序组具有相同的数据类型的元素.每个元素进行标识的唯一标表示其在集合中的位置. PL/SQL提供了三种集合类型: 索引表或关联数组 嵌套表 可变大小的数组或变长数组 Ora ...

  5. SQL入门之集合操作

    尽管可以在与数据库交互时一次只处理一行数据,但实际上关系数据库通常处理的都是数据的集合.在数学上常用的集合操作为:并(union),交(intersect),差(except).对于集合运算必须满足下 ...

  6. SQL使用总结——集合操作函数

    Oracle中集合操作符专门用于合并多条select 语句的结果,包括:UNION, UNION ALL, INTERSECT, MINUS.当使用集合操作符时,必须确保不同查询的列个数和数据类型匹配 ...

  7. SQL Server温故系列(4):SQL 查询之集合运算 & 聚合函数

    1.集合运算 1.1.并集运算 UNION 1.2.差集运算 EXCEPT 1.3.交集运算 INTERSECT 1.4.集合运算小结 2.聚合函数 2.1.求行数函数 COUNT 2.2.求和函数 ...

  8. 恕我直言你可能真的不会java第7篇:像使用SQL一样排序集合

    在开始之前,我先卖个关子提一个问题:我们现在有一个Employee员工类. @Data @AllArgsConstructor public class Employee { private Inte ...

  9. 过滤sql特殊字符方法集合

    /// <summary>     /// 过滤不安全的字符串    /// </summary>     /// <param name="Str" ...

随机推荐

  1. Web 在线文件管理器学习笔记与总结(10)查看文件夹中的内容

    ① 读取文件夹大小 a. 封装计算文件夹大小的函数 b.  打开文件夹 c. 循环判断文件夹下的内容是文件还是文件夹,如果是文件,则累积相加文件的大小:如果是文件夹,则递归调用该函数 注意两个问题: ...

  2. thinkphp开发技巧经验分享

    thinkphp开发技巧经验分享 www.111cn.net 编辑:flyfox 来源:转载 这里我给大家总结一个朋友学习thinkphp时的一些笔记了,从变量到内置模板引擎及系统变量等等的笔记了,同 ...

  3. ecshop缓存清理-限制或禁用ECShop缓存

    ecshop缓存清理-限制或禁用ECShop缓存   ECSHOP的缓存存放在templates/caches/文章夹下,时间长了这个文件夹就会非常庞大,拖慢网站速度.还有很多情况我们不需要他的缓存. ...

  4. xenserver+starwind架构布署

    主机 CPU 和主板均需支持 INTER-VT/ AMD-VT ,主板默认可能没开  进BISO开启  下载最新的 xenserver ,授权注册一下 轻松得到授权文件 (鄙视一下VMWARE,看人家 ...

  5. sshd调优

    sshd调优:禁用dns查找,加快速度在sshd_config中设置:UseDNS no禁用root登录:建立普通用户在sshd_config中设置PermitRootLogin no以上设置需要重启 ...

  6. [转]SQLBulkCopy使用

    SQLBulkCopy,用于数据库之间大批量的数据传递.通常用于新,旧数据库之间数据的更新.即使表结构完全不同,也可以通过字段间的对应关系,顺利的将数据导过来. 首先,SQLBulkCopy需要2个连 ...

  7. phpexcel 读取数据

    最近公司做一个客户导入会员的功能,以前导入都是使用csv格式导入的,但是客户反应问题挺多的,普遍是乱码(由于各种系统各种环境可能引起编码问题).最近想着就把这个导入完全改成excel导入,就研究了下p ...

  8. Xlib 窗口属性

    Xlib 窗口属性 转, 无法找到原作者 所有的 InputOutput 窗口都可以有零个或者多个像素的边框宽度,一个可选的背景,一个事件压制掩码(它压制来自孩子的事件传播),和一个 property ...

  9. 面向对象之abstract

    1.abstract class,抽象类不能被实例化,只能被继承:抽象类中可以包含非抽象方法 2.abstract method();抽象方法只能在抽象类中进行声明,并且没有方法体,非抽象继承子类中必 ...

  10. 关于FireMonkey TGrid赋值的一点小研究

    FireMoneky的TStringGrid用法和VCL里面的差不多, 但是另一个TGrid实在是奇葩, 几乎找不到给单元格赋值的方法(除了使用LiveBind) 看了其源码, 发现只要给某个Colu ...