Oracle(零)--> 伪列和分组聚合(Oracle 开篇,比较初级啦~)

   写在开篇~
   不知不觉已然到了开学的时候(等会。。跟我有什么关系。。),毕竟这个大三连暑假还不知道是什么就上岗了,看着周围同学秀的简直飞起 =。= 扯淡扯多了,再扯一句。。大三的时候学的 Oracle ,但是现在一想竟然不觉得有何内容,而且触发器,存储过程老师也没有教过,自己也没有看过,实在。。。毕竟华为工程师说的那句话还是依稀在眼前。。不管怎么样,先搞明白是何物,以后才在项目中知道该如何去使用。本流程基本按学习过程中 PPT 来走的,而再往前的东西概念太多,大家又不是很喜欢字,都爱看图嘛~视频就算了,太刺激了都受不了~哈哈。从伪列和sql函数开始谈起~
1、在讨论伪列及分组聚合之前,先说一下 select 语句和 dinstinct 的使用和注意事项。
1)select 语句中的运算使用列别名
如果显示数据库中存储的所有图书的列表时,需要将列标题显示为"Titil of books",可以在 select 子句中列名称的后面列出列别名。
sql:SELECT title AS "Title of books",category FROM books;
注意可选关键字 AS,以便区分列别名和列名称。
准则:如果列名称包含空格、特舒符号或者不希望全部以大写字母显示它,那么必须将它包含在 " " 中。如果只包含一个单词,则不需要 " " 。
2)使用 distinct 和 unique 删除重复的列。

2、伪列
1)Oracle 中伪列就像一个表列,但是它并没有存储在表中;
2)伪列可以从表中查询,但不能插入、更新和删除它的值;
3)常用的伪列有 ROWID 和 ROWNUM

ROWID:是表中行的存储地址,该地址可以唯一的标识数据库中的一行,可以使用 ROWID 伪列快速的定位表中的一行。
ROWNUM:是查询返回的结果集中行的序号,可以使用它来限制查询返回的行数。

3、常用的聚合函数(组函数)
也称为多行函数,他们能处理每一行并返回一个结果,常用组函数:SUM、AVG、COUNT、MIN、MAX。

聚合函数是对于所有记录进行聚合的,有时候我们需要先对记录分组再进行聚合。
对记录的分组是通过关键字 GROUP BY 实现的,如:group by f1,f2,f3,当且仅当两条记录在所有属性在 f1、f2、f3 上达成一致,它们才是同一组的。
例:每一类图书的平均利润
sql:SELECT category,TO_CHAR(AVG(retail - cost),'999.99')as profit FROM books GROUP BY category.

GROUP BY 字句注意事项
1、如果在 select 子句中使用一个组函数,那么在 select 子句中列出的单独的列必须在 GROUP BY 子句中列出
2、用来在 group by 子句中分组数据的列不必在 select 子句中列出,在 select 子句中包括它们只是为了在输出中指定组;
3、不能在 group by 子句中使用列别名
4、从包括 group by 子句的 select 语句返回的结果将以在 group by 子句中列出的列的升序显示结果,要想以不同的顺序显示结果,可以使用 order by 子句。

HAVING 子句
1、用来限制一个查询返回的组;
2、如果需要使用组函数来限制组,那么必须使用 having 子句,因为 where 子句不能包含组函数。Having 子句指定了那些将显示在结果中。即: having 子句充当了组的 where 子句。
例:显示平均利润超过 15 美元的图书的种类
sql:SELECT category,TO_CHAR(AVG(retail - cost),'999.99')as profit FROM books GROUP BY category Having AVG(retail-cost)>15.

ORDER BY子句
1、用于末尾,默认升序

次排序
1、ORDER BY 子句只指定一列时,称为"主排序",如果住排序中的两行或更多行完全相同,那么次排序提供了另一个进行排序的手段。
例:查询按州降序排列的客户,有多个居住在某个特定州的客户时,将按城市的升序对客户排序。
sql:SELECT lastname,firstname,city,state FROM customers ORDER BY state desc,city;


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值