- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.Select语句和视图.ppt.ppt
第六章 SELECT语句和视图;6.1 SELECT语句一般格式;6.2 数据源中数据表的各种连接;例:交叉连接和内连接;例:外连接;例:全连接;例:自连接;6.3 实现关系和集合运算一)关系运算;二)集合运算;改进上述查询:;2)交-子查询或INTERSECT(Oracle);3)差-子查询或MINUS(Oracle);4)除运算和含义和实现;实现:R(X,Y) ÷ S(Y,Z);例:查询选修了全部课程的学生号码和姓名。;例:查询至少选修了学生95002选修的全部课程的学生号码。 。;6.4 函数在SELECT中运用;1)仅输出月累计销售数;分析:分组统计必须满足下面两条:
必须能构造一个表达式,使每一组的元组具有相同值。
其蕴涵了条件是每一个元组只能属于一个组,即每一组的上述表达式的值要求不同。
本例显然不满足上述条件,比如2000年3月的销售数据,同时要被分组统计到3月及3月以后各月份的年累计销售数据中。
解决方法:由于2000年3月的数据要被同时分组到2000年3月到12月的各组中,但元组又不能被重复分配到不同组中,解决的方法是把这些数据重复扩展10次,扩展的方法是使用交叉连接。;解决步骤:;3)同时输出月累计销售数和年累计销售数方案1:联合两个查询并定义为一个视图,然后对视图分组统计;方案2:把两个查询定义为两个视图然后进行视图的连接;方案3:不使用视图,使用自定义函数;定义fthismon:;函数作用的分析:;例:列的拆分查询;分部门查询男女同学平均成绩;方法二:用联合(UNION)及一个视图(view);方法三:不使用视图;方法四:用一个视图;二)获得某列最大(小)值所在行的其他列值;Select语句:;2)获得每个商品早于saledate的最后的变价价格:;三)实现交叉表(Cross Table);方法一:使用select语句;实现上述思想的select语句:;case语句只适用SQL Server数据库,改进的方法:;对SQL Server该函数可以使用标准函数复合得到: (假设subid取值依次为sub001,sub002 …)
1-abs(sign(cast(substring(subid,4,3) as int)-i))
交叉表的select语句
select a.id,a.name,
sum(grade*(1-abs(sign(cast(substring(b.subid,4,3) as int)-1)))),
sum(grade*(1-abs(sign(cast(substring(b.subid,4,3) as int)-2)))),
sum(grade*(1-abs(sign(cast(substring(b.subid,4,3) as int)-3)))),
sum(grade*(1-abs(sign(cast(substring(b.subid,4,3) as int)-4))))
from students a,subjects b,grade c
where a.id=c.id and b.subid=c.subid
group by a.id,a.name
order by a.id;方法二:;*思考和练习:
文档评论(0)