SQL是关于集合的
一 以面向集合的思维方式来思考
公司里每个工作岗位上干了同样年数的员工列表
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是关于集合的的更多相关文章
- 【SQL查询】集合查询之INTERSECT
[SQL查询]集合查询之INTERSECT 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~ ...
- 04 SQL是关于集合的
面向集合去思考 要想成为写SQL语句的高级专家, 最困难的是一个转变就是从面相过程的思维方式转变到面相集合的思维方式. 首先要停止那些一次处理一行数据的过程化步骤思维, 试着把思路转移到使用类似于 “ ...
- SQL语句实例集合
SQL语句实例 表操作 例 1 对于表的教学管理数据库中的表 STUDENTS ,可以定义如下: CREATE TABLE STUDENTS (SNO NUMERIC (6, ...
- SQL记录-PLSQL集合
PL/SQL集合 集合是一个有序组具有相同的数据类型的元素.每个元素进行标识的唯一标表示其在集合中的位置. PL/SQL提供了三种集合类型: 索引表或关联数组 嵌套表 可变大小的数组或变长数组 Ora ...
- SQL入门之集合操作
尽管可以在与数据库交互时一次只处理一行数据,但实际上关系数据库通常处理的都是数据的集合.在数学上常用的集合操作为:并(union),交(intersect),差(except).对于集合运算必须满足下 ...
- SQL使用总结——集合操作函数
Oracle中集合操作符专门用于合并多条select 语句的结果,包括:UNION, UNION ALL, INTERSECT, MINUS.当使用集合操作符时,必须确保不同查询的列个数和数据类型匹配 ...
- SQL Server温故系列(4):SQL 查询之集合运算 & 聚合函数
1.集合运算 1.1.并集运算 UNION 1.2.差集运算 EXCEPT 1.3.交集运算 INTERSECT 1.4.集合运算小结 2.聚合函数 2.1.求行数函数 COUNT 2.2.求和函数 ...
- 恕我直言你可能真的不会java第7篇:像使用SQL一样排序集合
在开始之前,我先卖个关子提一个问题:我们现在有一个Employee员工类. @Data @AllArgsConstructor public class Employee { private Inte ...
- 过滤sql特殊字符方法集合
/// <summary> /// 过滤不安全的字符串 /// </summary> /// <param name="Str" ...
随机推荐
- UITableview cell中多个按钮
xib的 //不使用这种- (IBAction)button:(UIButton *)sender; //使用这种 @property (weak, nonatomic) IBOutlet UIBut ...
- 详解linux运维工程师入门级必备技能
详解linux运维工程师入门级必备技能 | 浏览:659 | 更新:2013-12-24 23:23 | 标签:linux it自动化运维就是要很方便的运用各种工具进行管理维护,有效的实施服务器保护 ...
- PHP date函数参数详解
PHP date函数参数详解 作者: 字体:[增加 减小] 类型:转载 time()在PHP中是得到一个数字,这个数字表示从1970-01-01到现在共走了多少秒,很奇怪吧 不过这样方便计 ...
- PHP 中获取当前时间[Datetime Now]
在 PHP 中可以通过date()获取当前时间,在>5.2的版本中最好还是用 datetime 类型 date() <?php echo date('Y-m-d H:i:s'); ?> ...
- java-冒泡排序
1.打印 print--打印,不换行,根据要求加上换行符 println--打印一次就换行 printf--打印,继承C语音的格式,可以进行格式化输出 换行符 '\r'是回车,'\n'是换行,‘\t' ...
- 线程池ThreadPoolExecutor
线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为: ThreadPoolExecutor(int corePoolSize, int maxi ...
- AMQP协议
当前各种应用大量使用异步消息模型,并随之产生众多消息中间件产品及协议,标准的不一致使应用与中间件之间的耦合限制产品的选择,并增加维护成本. AMQP是一个提供统一消息服务的应用层标准协议,基于此协议的 ...
- c 生成随机不重复的整数序列
#include <stdio.h> #include <malloc.h> #include <stdlib.h> #include <time.h> ...
- [LeetCode]题解(python):083 - Remove Duplicates from Sorted List
题目来源 https://leetcode.com/problems/remove-duplicates-from-sorted-list/ Given a sorted linked list, d ...
- Wall---hdu1348(求凸包周长 模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1348 求凸包周长+2*PI*L: #include <stdio.h> #include ...