sas sql中有类似mysql的 g_SAS中的SQL

自我愚见,望有错指出改之。

/*SQL 学习*/

/*数据定义语言(DDL):create、drop、alter*/

/*数据操作语言(DML):insert、update、delete*/

/*数据查询语言(DQL):select*/

/*数据控制语言(DCL):grant、remove、commit、rollback*/

/*SELECT语句*/

proc sql;

select ...

from..

where..

group by..

having..根据group

by得到子数据集

order by..;

/*EX1*/

data a;

set sashelp.class;

where a<70;

run;

proc sql;

select sex='F'

from sashelp.classfit;

quit;

proc sql;

select sex='F'

from sashelp.classfit;

quit; /*s输出的结果是111000.... 表示如果是符合sex=‘F’的就是1*/

/*利用SQL创建新表*/

proc sql;

create table

new(表的名字) as

select * (代表选择全部)

from ..;

quit;

/*利用列创建新变量*/

proc sql;

create table

new as

select*,

weight/height as ratio /*这个蛮有意思

ratio是新的列名*/

format=5.2 label='体重:身高比'

from

sashelp.classfit;

quit;

/*利用SQL进行数据统计 类似Proc

summary */

proc sql;

create table

new1 as

select min(age) as youngest,

max(age) as oldest,

mean(height) as h format=5.1

from sashelp.classfit;

quit;

/*等同于下面的语句*/

proc summary data=sashelp.classfit;

var age height;

output out

=new2(drop=_type_ _freq_)/*删去两个列的统计量*/

min(age)=yougest

max(age)=oldgest

mean(height)=h; /*记住分号别忘了*/

run;

/*利用SQL进行分组统计 加入了group

by*/

proc sql;

create table

new3 as

select sex,

min(age) as youngest,

max(age) as oldest,

mean(height) as h format=5.1

from sashelp.classfit

group by

sex;

quit;

/*等同于下面的语句*/

proc summary data=sashelp.classfit;

class sex;

var age height;

output out

=new4(drop=_type_ _freq_)

min(age)=yougest

max(age)=oldgest

mean(height)=h;

run;

/*根据条件语句创建数据集

CASE WHEN ..THEN*/

proc sql;

create table

new5 as

select name,age,sex,

case when

age=11 then 'zoo'

when sex='F' then 'man'

else '[none]'

end

as nenene /*是对新的 zoo man 这列命名*/

from new;

quit;

/*利用where创建子数据集 简单*/

proc sql;

create table

new6 as

select *

from new

where sex='F';

quit;

/*利用having从句代替where从句

*/

proc sql;

create table

new7 as

select*

from new

group by

sex,age

having sex='F';

quit;

/**必记:having只能在group

by 之后 where必须在其之前**/

/*利用distinct剔除重复记录 **这个有陷阱见笔记*/

proc sql;

create table

new8 as

select distinct*

from new;

quit; /*这个例子看不出效果 是以行为标准*/

/*****************************************************/

/*SQL提升*/

/*一.将原始变量和二次分析生成的变量进行合并*/

proc sql;

create table

new9 as

select name,sex,

count(*) as

many label='统计'

from

new

group by age

order by name ;

quit;

proc sql;

create table

new10 as

select name,sex,

count(distinct

sex) as many label='统计'

from

new

group by age

order by name ;

quit; /** Really 看不懂这的结果

为什么输出来那样???怎么做到的统计

哦哦 看明白了 是利用年龄的统计 后面distinct age 剔除重复的年龄再统计*/

/*二.SQL语言的嵌套*/

proc sql;

create table

new11 as

select *

from(select

age, /*标点*/

count(*)as

many

from new

group by age

)

having many=max(many);/*重点*/

quit;

/*下面是不嵌套的*/

proc sql;

create table

new12 as

select age,

count(*)as

many

from new

group by age;

proc sql;

create table

new13 as

select *

from new12

having many=max(many);

quit;

/*三、连接 难难难~~~~*/

/*简单合并用merge在data步*/

/*交叉合并

cross join 、 full join(key)、nature

full join(key)

inner join、left

join、right join笔记本上*/

data one;

do a=1,2;

output;

end;

run;

data two;

do b=10,9,8;

output;

end;

run;

data combined;

merge one two;

run;

proc sql;

create table

combined as

select *

from one cross join two;

quit; /*两种合并处理效果不一样!!!*/

/*四、where exists、where in(where any)查询数据库中已有的观测*/

data H;

input name $age;

cards;

John 12

;

proc sql;

create table

HH as

select *

from H

where exists

(select*

from new

where h.name=new.name

);

quit; /*有趣哈哈哈哈*/

proc sql;

create table

HHH as

select *

from h

where name in

(select name

from new

);

quit;

proc sql;

create table

HHHH as

select *

from h

where name=any /*补充ANY用法 >any(20,30)相当于>20

(select name

from new

);

quit;

/*五、intersect(交集),union(并集),expect(补集),

余集(得另外编程没有特定的代码)、union all(全集)、的区别*/

/*补充ALL用法 >all(20,30)相当于大于30,

/*any就是大于小的小于大的,all就是小于小的大于大的*/

/*小结:对小型表连接 数据步更有效,其余肯定SQL更有效啦*/

/*六、去掉标题(title;),显示程序效率 (stimer)*/

TITLE;

proc sql feedback stimer;

select *

from new

order by

age;

reset nostimer outobs=3;

select *

from new

order by

age;

quit; /*厉害这样显示*/

/*SQL在几个主要程序测试与效率

exec/noexec:控制SQL语句是否在执行

nostimer/stimer:在sas日志中报告每个SQL语句的效率统计数据

noerrorstop/errorstop:批处理时控制当有错误发生时,是否要检查语法

*/

/*七、利用宏变量*/

data w;

input ID $ a1-a4;

cards;

A 11 12 13 14

B 21 22 23 24

;

/*计算各个变量之和*/

proc sql;

create table

sums as

select sum(a1) as sum1,

sum(a2) as sum2,

sum(a3) as sum3,

sum(a4) as sum4 /*记住这没有点号!!!*/

from W

;

quit;

/*等价*/

proc summary data=w;

var a1-a4;

output out=sumss(drop=_type_

_freq_)

sum=sum1-sum4;

run;

data sumsss;

set w end=last;

ARRAY _a{*}a1-a4; /*定义数组*/

ARRAY _sum{*}sum1-sum4;

keep sum1-sum4;

do i=1 to 4;

_sum{i]+_a{i};

end;

if last then output;

run;

/*变量更多时 就用宏*/

%macro selectsums(maxindex=);

%do n=1 %to &maxindex;

sum(a&n)

as sum&n

%if &n NE &maxindex %then ,

;

%END;

%mend selectsums;

PROC SQL;

create table

sumssss as

select %selectsums(maxindex=4)

from w

;

quit; /*完美!*/

/*八、利用SQL生成报表*/

/*九、混合复杂操作*/

/*行列转置 常规的转置有proc transpose ..*/

proc sql;

create table

ww as

select id,'a1' as item,

a1 as vlaue

from w

union all

select id,'a2' as item,

a2

from w

union all

select id,'a3' as item,

a3

from w

union all

select id,'a4' as item,

a4

from w;

quit;

proc sql;

create table

verticalsums as

select *

from ww;

group by

item;

quit;

by tt.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论ORM之EFCore初篇(快速基于本地数据库实现数据操作)

欢迎大家阅读《朝夕Net社区技术专刊》第6期我们致力于.NetCore的推广和落地&#xff0c;为更好的帮助大家学习&#xff0c;方便分享干货&#xff0c;特创此刊&#xff01;很高兴你能成为忠实读者&#xff0c;文末福利不要错过哦&#xff01;前言&#xff1a;今天准备带大家一站…

C++变量的初始化问题及列表初始化

在C中&#xff0c;初始化是一个异常复杂的问题&#xff0c;很多人认为初始化是赋值的一种&#xff0c;事实上&#xff0c;初始化和赋值是两个完全不同的操作。 列表初始化 要定义一个名为haif的int变量并初始化为0&#xff0c;以下4条语句都可以做到。 int haif 0; int hai…

c++ set 遍历_47. Set 是如何工作的(3) 遍历顺序是如何确定的?

Set 是无序容器&#xff0c;它的插入顺序与迭代&#xff08;或者 print&#xff09;输出的顺序不保证与插入顺序一致&#xff0c;与 Dict 类似的问题&#xff0c;Set 的输出顺序是如何决定的呢&#xff1f;首先我们从 Set 的输出开始寻找蛛丝马迹&#xff0c;在 Dict 的研究中&…

跟着“土牛”学架构知识

这里的土牛是指abp的作者&#xff0c;土耳其人&#xff0c;简称“土牛”&#xff0c;前两天看了他分享的ppt&#xff0c;这里做个小笔记。架构分层图一&#xff08;abp作者&#xff09;图二&#xff08;clean架构&#xff09;图三&#xff08;在朋友圈看到的&#xff09;每种架…

《C++ Primer》2.6.1节练习

练习2.39&#xff1a; 在类体花括号后加一个分号就好了。 练习2.40&#xff1a; 代码如下&#xff1a; struct Sales_data{std::string bookNo;//书籍编号unsigned units_sold 0;//销售量double sellingprice 0.0;//零售价double saleprice 0.0//实售价double discount 0…

Cef mysql.exe_CEF3.2623使用记录:windows编译

CEF3.2623使用记录&#xff1a;windows编译1&#xff1a;cef3.2623下载地址2623是cef3最后一个支持xp系统的版本&#xff0c;且可以支持html的audio标签&#xff0c;可以用作对html音频的处理下载地址为 https://bitbucket.org/chromiumembedded/cef/branch/2623。下载win32版本…

Asp.Net Core 中IdentityServer4 授权流程及刷新Token

一、前言上面分享了IdentityServer4 两篇系列文章&#xff0c;核心主题主要是密码授权模式及自定义授权模式&#xff0c;但是仅仅是分享了这两种模式的使用&#xff0c;这篇文章进一步来分享IdentityServer4的授权流程及refreshtoken。系列文章目录(没看过的先看这几篇文章再来…

C++关于const限定符,这一篇足够!!!

C关于const限定符&#xff0c;这一篇足够&#xff01;&#xff01;!const限定符初始化和constconst引用初始化和对const的引用对const的引用可能引用一个并非const对象指针和constconst指针顶层constconst限定符 有时候我们希望定义这样一种变量&#xff0c;它的值不能被改变。…

liunx版mysql服务无法启动_linux环境下mysql无法启动

无论发现怎样的问题&#xff0c;首先查看err日志。问题一&#xff1a;查询err日志显示权限问题。分析&#xff1a;mysql原本是所属mysql用户&#xff0c;如果在root用户下启动就有可能出现问题。解决&#xff1a;(1)查看mysql的权限(2)发现有root权限&#xff0c;混乱了。所以先…

玩转控件:重写/重绘Dev中MessageBox弹窗控件

很久没有更新博客了&#xff0c;本想着直接发一篇《手撕ERP》系列&#xff0c;从控件重写、重绘&#xff0c;到框架搭建&#xff0c;再到部分模块实现业务的。但是每次动手的时候&#xff0c;都觉得难以下手。直接从数据库设计开始吧&#xff0c;模块设计还没定下来&#xff0c…

mysql innodb status_查看innodb的运行状态

show innodb status 在以后的mysql版本将会被show engine innodb status所替代。总所周知show engine innodb status是用来查看当前的mysql数据库中innodb表的相关状态。1&#xff1a;show engine innodb status。-----------------------------------| Type | Name | Status |…

[蓝桥杯][算法提高VIP]扫雷-枚举

题目描述 扫雷游戏你一定玩过吧&#xff01;现在给你若干个nm的地雷阵&#xff0c;请你计算出每个矩阵中每个单元格相邻单元格内地雷的个数&#xff0c;每个单元格最多有8个相邻的单元格。 0< n,m< 100 &#xff08;注意两个矩阵之间应该有一个空行&#xff0c;由于oj的…

.NET Core开发实战(第26课:工程结构概览:定义应用分层及依赖关系)--学习笔记...

26 | 工程结构概览&#xff1a;定义应用分层及依赖关系从这一节开始进入微服务实战部分这一节主要讲解工程的结构和应用的分层在应用的分层这里定义了四个层次&#xff1a;1、领域模型层2、基础设施层3、应用层4、共享层可以通过代码来看一下源码链接&#xff1a;https://githu…

mysql outfile 变量_转mysql dumpfile 与 outfile 函数的区别

一直以为两个函数作用是相同的 经过简单测试发现还是有些区别的 如下表admin mysql select * from admin; ------------------------- | uid | name | pass | ------------------------- | 1 | admin | baidusb | | 2 | root | hacksb | | 3 | manage一直以为两个函数作用是相同…

[蓝桥杯][算法提高VIP]排列式-全排列

题目描述 7254是一个不寻常的数&#xff0c;因为它可以表示为7254 39 x 186&#xff0c;这个式子中1~9每个数字正好出现一次 输出所有这样的不同的式子&#xff08;乘数交换被认为是相同的式子&#xff09; 结果小的先输出&#xff1b;结果相同的&#xff0c;较小的乘数较小的…

容器网络是如何影响Kubernetes中数据库性能的?

关于Kubernetes中的数据库&#xff0c;大家最关心的第一个问题是性能。由于这种担心的存在&#xff0c;许多使用Kubernetes进行生产应用程序工作的客户正在Kubernetes之外的裸机或VM上运行数据库。因此&#xff0c;我们致力于深入研究Kubernetes抽象层&#xff0c;确定值得测试…

mysql php状态函数_mysql_stat()查询MySQL服务器当前系统状态

mysql教程&#xff1a;mysql_stat()查询MySQL服务器当前系统状态 定义和用法 mysql_stat() 函数返回 MySQL 服务器的当前系统状态。 如果成功&#xff0c;则该函数返回状态。如果失败&#xff0c;则返回 false。 语法 mysql_stat(connection)参数 描述 connection 可mysql教程&…

聊聊面试的事(应聘方)

这里是Z哥的个人公众号每周五11&#xff1a;45 按时送达当然了&#xff0c;也会时不时加个餐&#xff5e;我的第「134」篇原创敬上原本春节长假之后会有不少人开始新的面试之旅。但是疫情的到来打乱了这个节奏&#xff0c;包括招聘方的计划。因此&#xff0c;在以往是金三银四的…

[信息学奥赛一本通-T1620]质因数分解-数论

题目描述 原题来自&#xff1a;NOIP 2012 普及组 已知正整数 n 是两个不同的质数的乘积&#xff0c;试求出较大的那个质数。 输入 输入只有一行&#xff0c;包含一个正整数 n。 输出 输出只有一行&#xff0c;包含一个正整数 p&#xff0c;即较大的那个质数。 样例输入 21 样…

mysql边备份边导入么_MySQL 怎么导入导出操作

mysql 如何导入导出操作1、MySQL 如何导入导出个别需要数据记录&#xff1f;– 先导出数据所在的表结构&#xff1a;mysql> show create table CHARBASE into outfile “/db/mysql/RS.sql” ;– 将需要单独导出的内容存放在文本文件里&#xff0c;这里一定要注意存放的位置必…