select flow_id,rw from (select t.flow_id ,rownum as rw from apex_030200.wwv_flow_list_templates t)  where rw >= 5

1.rownum只能用<如果使用>加别名

2.子查询引用只能在查询出的结果中引用,比如子查询没有查出flow_id,外层不能用,另外外层不能引用内层的t

3.薪水前三名,内层查出薪水 order desc的虚表外层使用rownum<3

4.merge可以实现存在数据就update不存在你就insert

merge into product a

using (select  1717 product_id, '002' req_no from dual b)

on (a.product_id = b.product.id and a.req_no = b.req.no)

when matched then

update set  product name = ''.....................

when not matched then

insert () values ()

5.start with connect by 可以查询出一组树的数据,注意最后connect by的条件(父节点=子节点 向上查询 反之向下查询)

可以order排序,可以加入两棵树(or),也可以加入where条件

select * from emp

where......

start with empnc = 7369 or empnc = 7204(注意不能用and )

connect by prior mgr = empno

order by ...

6 份额(查询某数据占有总数据的百分比)

select t.empno,t.ename,t.sal,
100*round(sal/sum(sal) over(),5)
 from emp t

7 连续求和(同名分为同组 累加)

select t.empno,t.ename,t.sal,
sum(sal) over(order by sal)
 from emp t

8.带条件的连续求和(分部门连续求和)

select t.empno,t.ename,t.sal,t.deptno,
sum(sal) over(partition by t.deptno order by sal)
 from emp t

9.分部门总和(取出orderby)

select t.empno,t.ename,t.sal,t.deptno,
sum(sal) over(partition by t.deptno)
 from emp t

10工资的分组查询份额(总数的百分比)带上部门分组

select t.empno,t.ename,t.sal,t.deptno,
100*round(sal/sum(sal) over (partition by t.deptno),4)
 from emp t

注意这里查询的是“”分组“,因此这里查询的是变成一组为一个100%,查询的是一个部门中员工在本部分所占用的薪水比例

11分组查询出单一条件并分级(查询某一个部门的薪水的级别)注意rank()和row_number()的区别 rank是跳跃性并列(1.1.3.3.5) row_number(1.2.3.4.5)

select t.*,ROW_NUMBER() over(partition by t.deptno order by t.sal desc) rank from emp t

12“总”。。。。。。这个字眼一般使用group by(区分于over(partition by order by))

按部门分组查询部门的总薪水

select sum(t.sal),t.deptno from emp t group by t.deptno

13 总的基础上再次分组 group by + rollup

select sum(t.sal),t.deptno from emp t group by rollup (t.deptno)汇总后将总和进行求和

select sum(t.sal),t.job,t.deptno from emp t group by rollup (t.deptno,t.job)注意多个rollup其实只有第一个参数有效

14cube 连接在order by后面(代替ROLLUP) rollup升级版 全部分组

15grouping实现不用java代码就可以对oracle 查询出的null字段进行赋值 0 本身结果 1合计结果

select sum(t.sal),t.deptno,
(case
       when((grouping(t.job)=1 and grouping(t.deptno)=0)) then '部门小计'
       when((grouping(t.job)=1 and grouping(t.deptno)=1)) then '部门总计'
else t.job end) as
job from emp t group by rollup (t.deptno,t.job)

16分组后的字段累加(比如按照员工名称,根据月份分组,实现自1月份到12月份工资累加,即二月份是 1月 + 2月 。。)
select t.empno, t.ename, t.sal, sum(sal) over (partition by t.ename order by t.sal desc) from emp t

17分组最高值 最低值 平均值 使用 max() over(partition by order by)代替sum() 还可以用min() avg()

18select * from v$transaction 查看事务

19多层分组函数和子查询之间的冲突问题

select a.CREATOR, a.count_Sum, b.full_name, b.dept_code, b.area_code
from (select temp.c CREATOR, count(temp.c) as count_Sum
from (select t.ca,
c.lv,
instr(t.ca, ',', 1, c.lv) + 1,
substr(t.ca,
instr(t.ca, ',', 1, c.lv) + 1,
instr(t.ca, ',', 1, c.lv + 1) -
(instr(t.ca, ',', 1, c.lv) + 1)) AS c
from (select ',' || checker || ',' AS ca,
checker,
LENGTH(checker),
length(checker || ','),
REPLACE(checker, ','),
length(REPLACE(checker, ',')),
nvl(length(REPLACE(checker, ',')), 0),
length(checker || ',') -
nvl(length(REPLACE(checker, ',')), 0) AS cnt
FROM wm_time_info a
where a.check_result != 1) t,
   (select LEVEL lv from dual CONNECT BY LEVEL <= 100) c
where c.lv <= t.cnt) temp
group by temp.c) a,
base_user b
where a.CREATOR = b.user_code

  

  外层查询和内层分组冲突

--select   a.CREATOR, a.count_Sum ,b.full_name,b.dept_code,b.area_code from (
select o.CREATOR,
count(o.CREATOR) as count_Sum,
FULLNAME,
DEPTCODE,
AREACODE
from (select temp.c CREATOR,
b.full_name FULLNAME,
b.dept_code DEPTCODE,
b.area_code AREACODE,
work_date
from (select work_date,
t.ca,
c.lv,
instr(t.ca, ',', 1, c.lv) + 1,
substr(t.ca,
instr(t.ca, ',', 1, c.lv) + 1,
instr(t.ca, ',', 1, c.lv + 1) -
(instr(t.ca, ',', 1, c.lv) + 1)) AS c
from (
---
select work_date,
',' || checker || ',' AS ca,
checker,
LENGTH(checker),
length(checker || ','),
REPLACE(checker, ','),
length(REPLACE(checker, ',')),
nvl(length(REPLACE(checker, ',')), 0),
length(checker || ',') -
nvl(length(REPLACE(checker, ',')), 0) AS cnt
FROM wm_time_info a
where a.check_result != 1
---
) t,
   (select LEVEL lv from dual CONNECT BY LEVEL <= 100) c
where c.lv <= t.cnt) temp,
base_user b
where temp.c = b.user_code) o
--where work_date >='2016-01-10'
group by o.CREATOR, FULLNAME, DEPTCODE, AREACODE
--) a ,base_user b where a.CREATOR = b.user_code

  

  20 注意 本条select中的分组和子查询都不可以作为函数的参数传入

ORACLE分组查询和统计等的更多相关文章

  1. 五、Oracle 分组查询、视图

    一.分组函数1.avg:平均分2.sum:求和3.max:最大值4.min:最小值注意:前面四个必须针对数值字段,且参数只能是一个5.count:求个数 二.分组查询1.语法是 group by 分组 ...

  2. solr4.5分组查询、统计功能介绍

    说到分组统计估计大家都不会陌生,就是数据库的group by语句,但是当我们采用solr4.5全文检索时,数据库提供再好的sql语句都没有任何的意义了,那么在solr4.5中我们如何做到分组统计呢?其 ...

  3. oracle分组查询

    分组函数 在分组函数中,如果有一个查找项分组,其他项必须也分组,比如下面的语句会报错,因为sal分组了,而ename没有分组: 1.显示工资最高的员工: 2.显示所有员工的平均工资: 2.1使用系统函 ...

  4. oracle 分组查询

    常用的函数:            ·:统计个数:COUNT(),根据表中的实际数据量返回结果:            ·:求和:SUM(),是针对于数字的统计,求和            ·:平均值 ...

  5. oracle分组查询实例ORA-00979和ORA-00937错误分析

    select J.ZWJGH,J.CZZXBH,J.JZZT,J.CWNY,J.JZPZH sum(J.FSE)<!-- 聚合函数字段没在分组条件中--> from JZPZXX J &l ...

  6. Mysql按时间段分组查询来统计会员的个数

    1.使用case when方法(不建议使用)-  代码如下 复制代码 SELECT    COUNT(DISTINCT user_id) user_count,    CASE    WHEN cre ...

  7. 【Django】Django 如何支持 分组查询、统计?

    代码: from django.db.models import Sum alarm_sum_group_items = models.FILE_PROTECT_ALARM.objects.filte ...

  8. oracle数据库之分组查询

    本章内容和大家分享的是数据当中的分组查询.分组查询复杂一点的是建立在多张表的查询的基础之上,(我们在上一节课的学习中已经给大家分享了多表查询的使用技巧,大家可以自行访问:多表查询1  多表查询2)而在 ...

  9. rails小技巧之分组查询统计并去重

    分组查询并统计 SpecialGroup.group(:special_type).count select special_type,count(*) from special_groups gro ...

随机推荐

  1. Oracle数据文件转移操作

    由于oracle表空间数据文件规划问题导致当前数据文件所在文件系统空间不足,当其他文件系统空间充足情况下,可将数据文件移动到空间充足的文件系统下.本文主要描述Oracle表空间数据文件移动的操作步骤. ...

  2. 删除oracle数据库用户

    手工删除ORACLE数据库用户时常会出现会话进程仍在使用导致删除失败的情况.需要查询会话并将会话删除才能成功将数据库用户删除,比较不方便. 适用场景 自动删除oracle数据库用户 基本知识 orac ...

  3. Matlab实现BP网络识别字母

    训练样本空间   每个样本使用5×5的二值矩阵表征一个字母.一共10个字母类型,分别是N,I,L,H,T,C,E,F,Z,V.每个字母9个样本.共90个. N1=[1,0,0,0,1; 1,0,0,0 ...

  4. Win2012&Win2008双系统启动菜单设置

    电脑最初安装的是XP,后来想升级操作系统,但XP里又有很多常用软件不想重装,于是装了一个Win2008 R2的双系统,安装好2008R2后,系统自动产生一个2008R2的启动菜单,可以选择进入2008 ...

  5. python脚本

    python源码编译 python -O -m py_compile file.py [root@localhost python]# cat dbass.py #!/usr/local/bin/py ...

  6. 1.3、CDH 搭建Hadoop在安装之前(端口)

    端口 Cloudera Manager,CDH组件,托管服务和第三方组件使用下表中列出的端口.在部署Cloudera Manager,CDH和托管服务以及第三方组件之前,请确保在每个系统上打开这些端口 ...

  7. jvisual中添加jstatd远程监控

    visualVM远程监控: jvisual中需要增加插件安装. 在执行Java 应用程序的服务器上先生成一个jstatd.all.policy grant codebase "file:${ ...

  8. Java基础学习笔记(四)

    21.构造方法(续):分类: 隐式构造方法:如果在一个类中,没有手动编写构造方法,则系统会提供一个默认的无参的构造方法 显式构造方法:如果在一个类中,手动编写构造方法,则系统不会提供默认的无参的构造方 ...

  9. exe4j 安装

    需要看清楚对应的jre版本 4.6---jre1.6 5.0以上---jre1.7

  10. vue打包后,接口请求404的完美解决方案

    在开发环境中,和后台对接为了解决跨域问题,使用了代理,也就是vue的proxyTable,但是打包放到生产环境中去时,接口请求不到,404,原因是开发环境的代理并不能用到生产环境,但是直接在请求接口是 ...