sql基础--组函数(聚合函数)的概念

一、sql函数分为三大类:单行函数、分组函数、分析函数
组函数也称为“多行函数”,他们处理每一组行并返回一个结果

组函数:sum()、avg()、count()、max()、min()

1.1求和sum()  用来计算存储在一组记录的某个数字字段的总数量

select sum(salary*12) as sa_su
from employees
where department='市场部';

1.2平均值avg()  计算指定列中的数值的平均值

select avg(salary*12) as sa_av
from employees
where department='市场部';

--注意:sum()、avg();必须是数值型参数

1.3max()、min()  最大值最小值  ||  可以是任意数值类型

select max(salary),min(salary),max(hire_date),min(hire_date)
from employees;

1.4计数count() 返回指定字段中包含的一个值的列数

--count()计数
select count(*) from employees;

--
select count(commission_pct) from employees;
--查询job总数
select count(job) from employees;
--类型总数
select count(distinct job) from employees;

1.5nvl()函数的使用

nvl()函数使得分组函数无法获得空值

eg:   nvl(表达式1,表达式2)    当表达式1为空值时,返回数值为表达式2的数值,比如nvl(job,0)当job为空时,得到的数值是0,而不是空值,有效地避免了求平均数时的一些错误。

2、group by 子句

--eg:求各个部门的平均工资    (包含单个列)

select avg(salary)
from employees
group by department;      //按照部门分组

--求各个部门各个岗位的平均工资   (包含多个列)

select department,job,avg(salary)
from employees
where department is not null
group by department,job;

注意:1、where 语句必须在from语句之后

          2、包含在group by语句中的列不必出现在select语句中。

          3、在select语句中的所有列必须出现在group by 语句中(除了分组函数包含的列之外)

3、having子句     用来限制一个查询返回的组

    where语句有过滤的作用,但是where语句中不能出现分组函数,所以就用having语句来代替。

    注意:where语句中不能用分组函数

--员工表中各部门的平均工资>15000的

select department,avg(salary)
from employees
group by department
having avg(salary)>15000;

--查询各部门最高工资>40000的部门

select department,max(salary)
from employees
group by department
having max(salary)>40000;

4、order by语句  

默认情况下是升序,asc是降序,其中支持别名

select department,avg(salary) avgs
from employees
group by department
order by avgs asc;

--次排序

...

order by 列1 asc,列2 desc;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值