湘潭大学大三上选修数据库 实验六—组函数与分析函数

一.小知识点

        1. 双引号:列重命名为中文或者数字时必须用双引号(重命名为字母时用单双引号都可以)

                区:赋值、输出时  中文用的都是单引号

declare
    people_name varchar2(20) := '张延'
begin
    ...
end;

        2. 四舍五入使用round()

                注:round可用于数值和日期函数

        3. case、decode用于select后,可以和分组函数一起用

二.分组函数:对一批数据进行操作后返回一个值(所以分组函数一定是在group by后执行)

        

        例如创建一个查询显示雇员总数,和在 2001 、2002 、2003  和受雇的雇员人数。创建适当的列标题。

法1(用case):
    select count(a.ename) "受雇总人数",
       sum(case when to_char(a.hiredate)='01%' then 1 else 0 end) "2001",
       sum(case when to_char(a.hiredate)='02%' then 1 else 0 end) "2002",
       sum(case when to_char(a.hiredate)='03%' then 1 else 0 end) "2003"
from scott.emp a;

法2(用decode):
select count(a.empno) "受雇总人数",
       sum(decode(to_char(a.hiredate,'yyyy'),'2001',1,0)) "2001",
       sum(decode(to_char(a.hiredate,'yyyy'),'2002',1,0)) "2002",
       sum(decode(to_char(a.hiredate,'yyyy'),'2003',1,0)) "2003"
from scott.emp a;

         注:case、decode用于select后,case、decode用于select后,可以和分组函数一起用

                列重命名为中文或者数字时用的是双引号

三.分析函数:排名

          rank() over( (partiton by ...) order by ... asc) as a_rank

                1.注:

                        1> 蓝色的为可选项

                         2> rank():具有相等值的行排位相同,序号随后跳跃 (1,2,2,4)

                              dense_rank():具有相等值的行排位相同,序号是连续的 (1,2,2,3)

                              row_number():返回连续的序号,论是否相等 (1,2,3,4)

                        3> as a_rank:重命名时注意标识符命名必须以英文字母开始,列重命名为中文或者数字时用的是双引号

                2.例如:

select sub_name,rank() over(partition by sub_name order by score asc) as a_rank
from paiming
order by sub_name,a_rank;--将结果按课程名排序,并在各个课程内部按照名次排序

                        注:order by可用于中文排序,注意其后有多个变量时的意思 

四.集合运算???

        

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小吴同学·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值