oracle数据库学习04

排序显示

传统数据查询的时候只会按照设置的主键排序。如果现在希望对制定的列进行排序的操作,必须通过ORDER BY 进行。

排序语法:

SELECT [DISTINCT] * | 列别名 ,列名称 
FROM 表名称
WHERE 条件
ORDER BY 排序的字段 | 列索引号 ASC|DESC ,排序的字段2 ASC | DESC...;
  • 升序ASC(默认) 由低到高
  • 降序DESC 由高到低


1. 查询雇员的的全部信息按基本工资由高到低排序

SELECT *  FROM  emp  ORDER BY  sal  DESC;

2. 查询CLERK 的全部信息并按基本工资升序排列

SELECR *  FROM  emp WHERE job ='CLERK' ORDER BY sal (ASC);

3. 按基本工资由高到低进行排序,如果工资相同按雇佣日期由早到晚进行排序

SELECT *  FROM emp ORDER BY sal DESC ,hiredate ASC 

分组统计

统计函数

可以取得一张表之中的全部数据量

常用统计函数

COUNT()      #求出全部的记录数
SUM()        #求出总和,操作的列是数字
AVG()        #平均值
MAX()        #最大值
MIN()        #最小值

例:
4. 查询公司每个月支出的月工资总和

  SELECT SUM(sal) FROM emp; 

5. 统计出公司的雇员人数

SELECT COUNT(empno) , COUNT(*) FROM emp; 

提示: 在使用COUNT(字段)的时候,如果列上存在了null,那么null 是不会进行统计的,如果使用的 DISTINCT 那么列上如果有重复,重复的记录也不统计。 在没有数据的时候COUNT()函数返回 0 。

分组函数

GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。

SELECT [DISTINCT]    分组字段   [AS] 列别名 ,  |  统计函数 [AS]  [别名]  ,... 
FROM 表名称
WHERE 条件
GROUP BY 分组字段
ORDER BY 排序的字段 ASC | DESC... ;

6. 统计出每个部门的人数

SELECT deptno ,COUNT(*) FROM emp GROUP BY deptno;

7.统计出每种职位的最低和最高工资

SELECT job, MIN(sal) , MAX(sal) FROM emp GROUP BY job;

对分组之后的信息再次进行过滤,使用HAVING

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
HAVING 子句可以让我们筛选分组后的各组数据。

SELECT [DISTINCT] 分组字段 [AS] 列别名 , | 统计函数 [AS] [别名] ,…
FROM 表名称
WHERE 条件
GROUP BY 分组字段
HAVING 过滤条件
ORDER BY 排序的字段 ASC | DESC… ;

8.查询平均工资大于2000的职位信息,平均工资,雇员人数

SELECT job, ROUNF(AVG(sal),2),COUNT(empno) FROM emp 
GROUP BY job 
HAVING AVG(sal)>2000

9.查询非销售人员工作的名称以及从事相同工作的雇员的月工资总和,且月工资总额合计大于5000,输出结果按月工资合计的升序排列。

SELECT DISTINCT job,SUM(sal) FROM emp
WHERE job<>'CLERK'
GROUP BY job
HAVING SUM(sal)>5000
ORDER BY sum;

通过上面的例子,可以对 HAVING 和 WHERE 区别描述:
WHERE:是在分组前使用(可以没有GROUP BY),不允许使用统计函数;
HAVING:是在分组后使用(必须要有GROUP BY),允许使用统计函数;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值