多行函数:(聚合函数/分组函数)

解释:多条数据进入,单条结果出来(多进单出)

1).max(obj):最大值

2).min(obj):最小值

3).sum(num):求和

4).avg(num):求平均值

5).count(obj):计数

【注意事项】:

1).max()和min()两个函数可以接受任何数据类型的实际参数

2).sum()和avg()两个函数只能接受number类型的数据

3).多行函数/聚合函数/分组函数满足自动忽略空值的特点(在某些情况下,我们不应该忽略空值...)

案例如下:

查询公司薪资最高的、最低的、工资总和以及平均值的信息?

select max(salary),min(salary),sum(salary),avg(salary)

from employees;

参看如下代码并思考:

select max(last_name),max(hire_date),min(last_name),min(hire_date)

from employees;

关于count()的使用:

需求如下:

查询公司有多少员工?

select count(employee_id),count(last_name),count(hire_date) from employees;

select count(1),count(2),count(0),count(107),count('*') from employees;

执行以上代码发现效果都是正确的,我们以后做计数操作的时候,我们都用count('*')来实现;

查看如下代码:

select count(department_id),count(commission_pct) from employees;

执行以上代码发现问题所在,只要是多行函数/聚合函数/分组函数满足自动忽略空值的特点

修改以上代码实现需要的效果:

select count(nvl(department_id,100)),count(nvl(commission_pct,1)) from employees;

思考:avg() = sum() / count()?

答:以上的等式成立

需求如下:

查询公司的平均奖金率?

select avg(commission_pct),sum(commission_pct) / count(commission_pct),

sum(commission_pct) / count(nvl(commission_pct,2)),

sum(commission_pct) / 107,

sum(commission_pct) / count(*)

from employees;

作业:

--1.显示系统时间(注:日期+时间)

select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;

--2.查询员工号,姓名,工资,以及工资提高百分之20%后的结果(new salary)

select employee_id,last_name,salary,salary * 1.2 "new salary" from employees;

--3.将员工的姓名按首字母排序,并写出姓名的长度(length)

select last_name,length(last_name) from employees order by last_name;

--4.查询各员工的姓名,并显示出各员工在公司工作的月份数(worked_month)。

select last_name,round(months_between(sysdate,hire_date),0) "worked_month" from employees;

--5.查询员工的姓名,以及在公司工作的月份数(worked_month),并按月份数降序排列

select last_name,round(months_between(sysdate,hire_date),0) "worked_month"

from employees

order by "worked_month" desc;

--方式一:

select last_name || ' earns $' || salary || ' monthly but wants $' || 3 * salary "Dream Salary" from employees;

--方式二:

select last_name || ' earns' || to_char(salary,'$99999') || ' monthly but wants' || to_char(3 * salary,'$99999') "Dream Salary" from employees;

select last_name "Last_name",job_id "Job_id",

decode(job_id,'AD_PRES','A',

'ST_MAN','B',

'IT_PROG','C',

'SA_REP','D',

'E') "Grade"

from employees

where job_id in('AD_PRES','ST_MAN','IT_PROG','SA_REP','ST_CLERK')

order by "Grade" desc;

select last_name "Last_name",job_id "Job_id",

case job_id when 'AD_PRES' then 'A'

when 'ST_MAN' then 'B'

when 'IT_PROG' then 'C'

when 'SA_REP' then 'D'

else 'E' end "Grade"

from employees

where job_id in('AD_PRES','ST_MAN','IT_PROG','SA_REP','ST_CLERK')

order by "Grade" desc;

返回目录

学习python第三天之多行函数的更多相关文章

  1. 学习Python的三种境界

    前言 王国维在<人间词话>中将读书分为了三种境界:"古今之成大事业.大学问者,必经过三种之境界:'昨夜西风凋碧树,独上高楼,望尽天涯路'.此第一境也.'衣带渐宽终不悔,为伊消得人 ...

  2. 学习python第三天

    变量的命名规范 1.只能有 字母 数字 及_组成 2.不能以数字开头 3.避免与系统关键词重名:重名不会报错,但系统的功能就被自定义的功能屏蔽掉了(严重不建议这样做) 4._开头的变量都有特出含义 5 ...

  3. 【Python】Java程序员学习Python(三)— 基础入门

    一闪一闪亮晶晶,满天都是小星星,挂在天上放光明,好像许多小眼睛.不要问我为什么喜欢这首歌,我不会告诉你是因为有人用口琴吹给我听. 一.Python学习文档与资料 一般来说文档的资料总是最权威,最全面的 ...

  4. 学习python第三天单行函数

    1.去重:distinct关键字 需求:查看公司一共有多少部门? select department_id from employees;此代码会查出107条记录,存在部门重复的问题! select ...

  5. 学习python第三天数据库day2

    day01回顾: 数据库: 定义:存储数据的仓库(database,简称db) 常用的数据库对象有哪些? 1).数据表(table) ***** 2).视图(view) 3).索引(index) 4) ...

  6. 系统学习python第三天学习笔记

    day02补充 运算符补充 in value = "我是中国人" # 判断'中国'是否在value所代指的字符串中. "中国"是否是value所代指的字符串的子 ...

  7. python第三周文件处理和函数-----下

    #默认参数的值是在一开始定义的时候就传给了函数, # 在后来的修改中不会被修改. #默认参数的值必须放到位置形参参数的最后面 #默认参数使用的场景是一个参数不经常变得场景,所以参数一般是不可变类型.字 ...

  8. python第三周:集合、函数、编码、文件

    1.集合: 集合的创建: list_1 = set([1,2,3,4,5]) list_2 = set([2,3,44,7,8]) 集合的特性:集合是无序的,集合可以去掉重复的元素 集合的操作:求交集 ...

  9. 读书分享全网学习资源大合集,推荐Python学习手册等三本书「01」

    0.前言 在此之前,我已经为准备学习python的小白同学们准备了轻量级但超无敌的python开发利器之visio studio code使用入门系列.详见 1.PYTHON开发利器之VS Code之 ...

随机推荐

  1. FineUI分组显示弹框最新的在最上边

    function TOBTCorrFun(obj){ var msgContent = JSON.parse(obj.dataJson); var tJson = JSON.stringify(obj ...

  2. SpringMVC的controller层接收来自jsp页面通过<a href="/user/userUpdateInfo/>的中文乱码问题

    这种情况是,jsp页面的中文正常显示,数据的中文也是正常显示,但是在Controller层接收到的中文是乱码,如下图所示: 解决方法:在Controller层对前台传递的中文乱码进行处理,将它转换成u ...

  3. Java Tools &Tools APIs

    java 启动Java应用程序 javac Java编译器javac读取用Java编写的源文件,并将它们编译为字节码类文件. 用法: javac <options> <source ...

  4. 【基于初学者的SSH】struts2 的拦截器、令牌的简单应用及理解

    一:拦截器与过滤器类似,但是它们的区别也很大: 01):过滤器理论上可以过滤任意内容,比如HTML,servlet,jsp,图片路径 02):拦截器只可以拦截action. 二:拦截器的原理  act ...

  5. Spring-全局异常拦截

    Spring MVC那一篇里提到了异常拦截来做参数校验返回,那里是对特定的 controller 做异常捕捉,但是我们也可以选择全局拦截处理 快速开始 @ResponseBody @Controlle ...

  6. 查看Windows日志

    之前,在Windows服务管理器中启动WCF服务时,出现“本地计算机上的XXX服务启动后停止.某些服务在未由其它服务或程序使用时将自动停止.”问题,最后通过查看Windows日志中的详细信息才得以解决 ...

  7. 动态We API层(动态生成js)

    ABP动态webapi前端怎么调用? 研究abp项目时,页面js文件中一直不明白abp.services... 是从哪里来的 在调试SimpleTaskSystem的AngularJs demo时,一 ...

  8. WAI-ARIA无障碍网页应用属性完全展示——张鑫旭

    一.你至少应该知道ARIA是什么东西! WAI-ARIA指无障碍网页应用.主要针对的是视觉缺陷,失聪,行动不便的残疾人以及假装残疾的测试人员.尤其像盲人,眼睛看不到,其浏览网页则需要借助辅助设备,如屏 ...

  9. 怎么配置eclipse的联想功能

    第一步:打开Eclipse,windows下,打开“window”→“Preferences” :mac下,打开“偏好设置”. 第二步:选择“Java”,展开,“Editor”,选择“Content ...

  10. Teamviewer 手机端怎么拖动窗口,选中文字

    Teamviewer 手机端怎么拖动窗口,选中文字 Teamviewer 手机端拖动窗口,选中文字和触摸板的使用方式是一样的 点两下不松开就可以拖动 点两下不松开也可以选中文字 Teamviewer ...