楼主: huangtiancheng
938 0

[学习分享] PRCO SQL 中set operator学习心得 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

21%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
3.7020
学术水平
3 点
热心指数
3 点
信用等级
1 点
经验
231 点
帖子
70
精华
0
在线时间
131 小时
注册时间
2019-10-8
最后登录
2025-12-21

楼主
huangtiancheng 在职认证  发表于 2021-7-31 18:21:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

PROC SQL 中set operator学习心得

注:文章大部分内容参考 博客园

1、set 算符

算符 说明
union 从多个查询中产生所有的非重复观测
except 产生只单独属于第一个查询的观测,第二个查询的公共部分就会被排除掉
intersect 产生两个查询中公共部分的观测
outer union 对多个查询结果直接连接

2、基本语法(PROC SQL进行纵向操作)

proc sql;
select *
from table1
set-operator <all> <corr>
select *
from table2
set-operator <all> <corr>
/*可以多个set算符进行叠加*/
select *
from table3;

3、union

  • 当没有all关键字时,合并两个查询的结果,显示连个查询中所有非重复观测,相当于先连接后去重
  • 合并结果与列名无关,仅与位置有关,即若table1有两列(x、y),table2有有两列(x、z),则合并后的表有两列,名称为x与y(先以第一张表的名称来给合并后的表列命名,若第一张表该列无名称则使用第二张表的名称);
  • 默认情况下是要去重的,即两步执行:
    (1)PROC SQL eliminates duplicate (nonunique) rows in the tables.
    (2)PROC SQL selects the rows that meet the criteria and, where requested, overlays columns.
  • 如果加上all关键字,则不会进行第一步,可以提高效率。即all关键字有两个作用:一是阻止去重,二是阻止排序。

4、except(解释all与corr两个关键字的用法,union、intersect用法类似)

使用以下表格进行举例
enter image desc ription here

proc sql;
select * from one
except
select * from two;
quit;
the five remaining rows in table one,the unique rows,are displayed in the output.

enter image desc ription here

单独加上all关键字

proc sql;
select * from one
except all
select * from two;
quit;
  • 不进行unique步,保持原样直接筛选。(省略第一步可以提高效率)。结果如下:
    enter image desc ription here

5、outer union

  • 简单纵向合并,无corr关键字时不会合并列;
  • 有corr关键字时,相同列名的列进行合并;
  • 本身具有all关键字的性质,所以使用all无效。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:operator Perato Opera ERAT 学习心得

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-7 11:52