为了账号安全,请及时绑定邮箱和手机立即绑定

Oracle高级查询

  • select max (avg(sal))

    from emp

    group by deptno;

    查看全部
  • select deptno ,avg(sal) 平均工资

    from emp 

    group by deptno

    order by 2  ---这里代表第二个元素 也可以改成   别名 平均工资 结果一样  或者直接把函数复制过来


    desc降序

    查看全部
  • where 后面不能使用 组函数 多函数 之类的 

    这是他与 having的区别    

    having是先分组再过滤  比如你要部门编号为10的 员工 他会先按编号分组

    where 是直接过滤 在分组 

    但是从sql优化上 尽量选择where


    ora-00934

    查看全部
  • select avg (表中列字段) ,sum (表中列字段)  from 表;   --列出 表中字段的平均值,和
    select max (表中的字段), min (表中的字段) from 表 ; --列出表中字段的 最大值 最小值
    select  count(*) from 表; 输出这个表中一共有的数据条数
    select count(distinct 表中字段) from 表;   输出表中不重复字段的个数  
    distinct 用于去重

    查看全部
    0 采集 收起 来源:使用分组函数1

    2018-04-19

  • select deptno ,avg(sal)
    from emp
    group by deptno ;  --按照部门编号分组

    select a,b,c ,组函数(x)
    from table
    group by a ;  --这里应该写a,b,c 不能只写a              通过部门号  然后通过b c条件接着分组
    只写a  ora-00937  非法使用分组函数
    在select 列表中所有未包含的组函数中的列  group by中都应该写
    select avg(sal)
    from emp
    group by deptno;                --这种不会展示deptno

    查看全部
  • select sum(sal)/count(*) , sum(sal)/count(sal)  ,   avg(sal)  from emp ;  

    count(*) 会包含空值的个数

    分组函数会自动过滤掉空值

    nvl函数  使得分组函数不忽略空值

    nvl(comm,0)   这个函数的意思是 当该字段为空的时候返回第二个参数
    当字段不为空 返回他本身

    这个函数可用于自增的输入
    nvl(max(sno),0))+1  最大值加一   可用于插入数据的编号

    查看全部
    0 采集 收起 来源:使用分组函数3

    2018-04-19

  • select count(*),count(nvl (comm,0) from emp;

    空值返回0,非空返回comm的值

    查看全部
    0 采集 收起 来源:使用分组函数3

    2018-04-17

  • select 字段1,avg(字段2)

    from 表名

    group by 字段1,字段2

    order by 字段1;

    查看全部
  • 多行子查询中的空值问题
    查看全部
  • 子查询主要问题

    查看全部

  • Select

          (Select Count(*) From emp)total,

          (Select Count(*) From emp Where to_char(hiredate,'yyyy')='1980') "1980",

          (Select Count(*) From emp Where to_char(hiredate,'yyyy')='1981') "1981",

          (Select Count(*) From emp Where to_char(hiredate,'yyyy')='1982') "1982",

          (Select Count(*) From emp Where to_char(hiredate,'yyyy')='1987') "1987"

    From dual;


    Select um(Decode(to_char(hiredate,'yyyy'),'1980',1,0)) "1980",

           Sum(Decode(to_char(hiredate,'yyyy'),'1981',1,0))"1981",

           Sum(Count(*) totla ,

           SDecode(to_char(hiredate,'yyyy'),'1982',1,0)) "1982",

           Sum(Decode(to_char(hiredate,'yyyy'),'1987',1,0)) "1987"

           From emp ; 


    查看全部
    0 采集 收起 来源:案例3

    2018-04-05

  • 单行子查询注意点
    查看全部
  • 使用行号需要注意的两个问题
    查看全部
  • 不知道查询的结果是不是保证顺序的,比如'1,2,3,4'的结果应该是'张三,李四,王五,赵六',而如果是'1,3,2,4',那么结果应该是'张三,王五,李四,赵六',下列查询语句应该可以解决,不知还有没有更简便的语句

    SELECT B.CI_ID, MAX(B.WM) STU_NAME
      FROM (SELECT A.CI_ID,
                   WM_CONCAT(A.STU_NAME) OVER(PARTITION BY A.CI_ID ORDER BY A.CI_ID, A.P) WM
              FROM (SELECT PC.CI_ID, PS.STU_NAME, INSTR(PC.STU_IDS, PS.STU_ID) P
                      FROM PM_CI PC, PM_STU PS
                     WHERE INSTR(PC.STU_IDS, PS.STU_ID) > 0
                     ORDER BY CI_ID) A) B
     GROUP BY B.CI_ID;


    查看全部
    2 采集 收起 来源:练习

    2018-04-04

  • SELECT COUNT(*) TOTAL,
           SUM(DECODE(TO_CHAR(HIREDATE,'yyyy'),'1980',1,0)) "1980", 
           SUM(DECODE(TO_CHAR(HIREDATE,'yyyy'),'1981',1,0)) "1981",
           SUM(DECODE(TO_CHAR(HIREDATE,'yyyy'),'1982',1,0)) "1982",
           SUM(DECODE(TO_CHAR(HIREDATE,'yyyy'),'1987',1,0)) "1987"
    FROM EMP A


    查看全部
    0 采集 收起 来源:案例3

    2018-04-04

举报

0/150
提交
取消
课程须知
小伙伴们,学习本课程前需要掌握Oracle的语法基础,并且对Oracle的函数有所了解。如不了解这两部分内容,请移步《Oracle数据库开发必备利器之SQL基础》和《Oracle数据库开发利器之函数》两门教程。
老师告诉你能学到什么?
1、掌握分组查询 2、掌握多表查询 3、掌握子查询

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!