SQL实训总结

实 训 总 结

忙了近两个周的SQL实训作业终于完成了,看着那脚本和我的这个实训报告,一种成就感涌出心底。在这次实训中,我遇到很多困难,不得不说的是,我要感谢我的同学,他们在我不懂的时候很有耐心的教我。在这两个周的实训,我收获了很多,本来我的SQL只能算是似懂非懂,可这两个周下来就让有一种融会贯通,打通任督二脉的感觉。只见那天空一声巨响,一个白衣飘飘的少年飘然而至,这少年面红耳赤竟是为何?哪到那西门庆张口喝道:大山的子孙哟,爱太阳勒··· 这少年心中犹如几十只小兔一样砰砰乱撞,这西门大官人果然是衡水老白干,真有男人味。少年羞涩说道:听大官人这一曲,真是鲜而不腻,干而不燥啊,实属居家旅行杀人必备良药啊,这真是,此去只应天上有,人间哪的几回闻···小生此处有一上联,不知官人能否对出下联。

西门庆道:但出无妨,若是对出,可不美哉

少年吟道:小撸怡情,大撸伤身,强撸灰飞烟灭

西门大官人沉思片刻,四十五度仰望天空:先撕长裙,后撕短裤,百撕不得骑姐 少年又道:大旱三年,仓空,井空,苍井空

西门庆对曰:阴雨十日,屋烂,藤烂,武藤兰

只见那少年与西门大官人相视而笑,一切尽在不言中

西门大官人哈哈笑道:请小官人谅解我这莽汉的鲁莽,实属,看到小官人情不自禁啊,敢问小官人可否婚配?

只见那少年脸更红了:官人此言差矣,小生与官人一见如故,一见倾心,相见恨晚相敬如宾啊,只愿为官人洗衣做饭,从此相伴官人左右,不离不弃,直至终老。

西门庆一听这话,心急如焚,心乱如麻,心潮澎湃:既是如此,我愿与小官人生死与共,在天愿做比翼鸟,在地愿为连理枝啊!有道是诗云:上邪!我欲与君相知,长命无绝衰。 山无陵,江水为竭,冬雷震震,夏雨雪,天地合,乃敢与君绝··· 少年幸福微笑道:君若不离,我定不弃,如此便与君缘定三生,甘愿做受,与君戏得鱼水之欢

西门庆听到此处,更加心急如焚:官人菊花如何,可否光鲜亮丽,紧凑如初? 少年羞涩到:滑而不腻,紧而不迫,原装正版,支持验货

西门庆大笑到:如此甚好,就于此处与小官人行那鱼水之欢,地为床,天为被,如此可否?少年到:一切听从夫君决断

有道是诗云:异性用来繁衍,同性才有真爱,好基友,一骑一辈子啊!

 

第二篇:SQL学习总结

SQL学习总结

一些常用的知识

1. NULL

1. ISNULL函数做一个空值的判断,语法表达式为ISNULL(EXPRESSION1,0),意思是如果是0则返回NULL,如果不是零,则返回EXPRESSION1的表达式

ISNULL函数,经常跟CASE WHEN…THEN..ELSE..END 表达式联合在一起做一个复杂的ISNULL判断,他的意图是先统一表中的NULL值和对查询结果不产生影响的值。

2.NULLIF函数,语法表达式为NULLIF(EXPRESSION1,EXPRESSION2),意思是如果两个表达式相等则返回NULL,如果两个表达式不相等则返回EXPRESSION1.

2.数据类型的转换

1. 一般情况来说SQL里面从低级的数据类型转换成高级的数据类型是默认的,但从高级转换为低级的数据类型则需要做定义。

数据类型排序(从高到低)

DATETIME—FLOAT—INT—VARCHAR—CHAR

当自己不能判断哪个数据类型比较高时,可以先不做转换,如果SQL可以运行,则说明是向高级转换,如果不能运行,则必须做一个转换

2.CONVERT函数

表达式;CONVERT(数据类型(长度),EXPRESSION1,样式)

例子;CONVERT(VARCHAR(8),GETDATE(),112)

3.CAST函数

表达式;CAST(EXPRESSION1 AS 数据类型(长度))

例子;CAST(GETDATE() AS VARCHAR(8))

3.当查询的结果存在小数点时,我们为了查询的结果美观,好比较,可以根据需要定义保留的小数点位数

1.CONVERT函数

表达式;CONVERT(数据类型(长度),EXPRESSION1)

例子;CONVERT(NUMERIC(18,2),EXPRESSION1)

解释;将EXPRESSION1保留两位小数

2. CAST函数

表示式;CAST(EXPRESSION AS 数据类型(长度))

例子;CAST(EXPRESSION AS NUMERIC(18,2))

4.排序函数

当我们想对查询的结果取一个极值时,通常容易用到排序函数;ROW_NUMBER

表达式;ROW_NUMBER () OVER(PARTITION BY COLUMN_NAME1 ORDER BY

COLUMN_NAME2 ASC/DESC) AS 新列名

解释;PARTITION BY 这个函数是为了区别要排序的的结果,而ORDER BY 函数是鬼结

果进行排序。

例子;ROW_NUMBER () OVER(PARTITION BY 基金代码 ORDER BY 基金净值

DESC) AS 最大基金净值

取出每个基金最大的基金净值

5.用函数计算和定义时间间隔

1.DATEADD函数

我们可以通过DATEADD函数来定义时间间隔。

例如;近一周 DATEADD(DD,-7,GETDATE())

近一个月 DATEADD(MM,-1,GETDATE())

近半年 DATEADD(MM,-6,GETDATE())

近一年 DATEADD(YY,-1,GETDATE())

2. DATEDIFF函数

我们可以通过DATEDIFF函数来计算时间间隔

表达式;DATEDIFF(DD/mm/yy,EXPRESSION1,EXPRESSION2)

例如;现在和TDATE的时间间隔

DATEDIFF(DD/MM/YY,TDATE,GETDATE())

3. DATEADD和DATEDIFF的交叉使用

例如;这是计算一个月第一天的SQL 脚本:

SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

本周的星期一

SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

一年的第一天

SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

季度的第一天

SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

4. 备注;在使用这两个函数的时候我们必须注意间隔不能用小数来定义,这两个函数

无法识别小数

5. 题目要求查询的结果随自然日的变化而变化也要用到这两个函数。

例子;取上月中证500指数权重数据,列名;指数代码,指数名称,日期,权

重股代码,权重股市场代码,权重(issweight表),并按照日期,权重股

代码排序。

--注日期要能随自然日变化而变化

SELECT指数代码=ISYMBOL,指数名称=INAME,日期=TDATE,权重股代码=SYMBOL, 权重股市场代码=EXCHANGE,权重=WEIGHING

FROM ISSWEIGHT

WHERE INAME='中证500指数'

AND

LEFT(CONVERT(VARCHAR(8),TDATE,112),6)=LEFT(CONVERT(VARCHAR(8),DATEADD(MM,-1,GETDATE()),112),6)

ORDER BY 日期

6.对查询的结果进行行业分类

--中信标普

SELECT * FROM CINDUSTRY WHERE STYLE='504'

--申万1级

SELECT * FROM CINDUSTRY WHERE Style='464'

--申万2级

SELECT * FROM CINDUSTRY WHERE Style='489' AND RIGHT(STYLECODE,2)='00'AND RIGHT(STYLECODE,3)<>'000'

--取证监会一级

SELECT * FROM CINDUSTRY WHERE Style='009' AND DATALENGTH(STYLECODE)=2 --取证监会二级

SELECT * FROM CINDUSTRY WHERE Style='009'

AND DATALENGTH(STYLECODE)=CASE WHEN

STYLECODE<>'ZC99' THEN 3 ELSE 4 END STYLECODE LIKE '%C%' AND

注释:LEN(STYLECODE)=2 表示取对应代码长度为2的

LEN(STYLECODE)=CASE WHEN STYLECODE LIKE '%C%' AND STYLECODE<>'ZC99'

THEN 3 ELSE 4 END 表示制造业的时候是取长度为3的对应代码,其他的长度为4的时候都是属于证监会二级分

相关推荐