- 浏览: 813903 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (413)
- 项目 (12)
- 统计分析 (3)
- java (7)
- jquery (15)
- oracle (33)
- 面试题 (8)
- 排序算法 (3)
- 蛇形矩阵算法 (3)
- 字符串 (1)
- ICU分析插件 (1)
- html5 (1)
- Ubuntu (4)
- Linux (4)
- memcache (2)
- myeclipse (3)
- hadoop (18)
- hbase (14)
- hive (7)
- zookeeper (2)
- pig (0)
- mysql (11)
- Redis (8)
- MongoDB (7)
- Cassandra (0)
- Neo4j (0)
- springMVC (3)
- ibatis (1)
- mahout (0)
- Highcharts (1)
- maven (7)
- 生活随笔 (6)
- 存储过程 (4)
- mybatis (3)
- bootstrap (19)
- 工作中遇到的问题 (23)
- node.js (3)
- web前段 (6)
- AngularJS (5)
- GIT (2)
- nginx (5)
- hive,sqoop (1)
- 高并发 (2)
- 算法 (3)
- 工具类 (2)
- ckeditor (1)
- java代码自动生成 (3)
- ueditor (6)
- svn (4)
- easyui (3)
- 数据挖掘 (4)
- ligerUi (1)
- fullcalendar (1)
- 微信公众号开发 (1)
- tomcat (2)
- 面试 (7)
- 数据库性能优化 (2)
- R语言 (3)
- R (6)
- ylcf (39)
- CentOS (13)
- docker (28)
- Spring Boot (10)
- Nexus (1)
- thymeleaf (2)
- nodejs (2)
- swagger (1)
- Jenkins (1)
- SpringCloud (9)
- vue (1)
- springClould问题汇总 (3)
- layui (1)
最新评论
-
greatwqs:
在前置请求页面返回token, 在提交接口中验证token, ...
Spring MVC 用拦截器+token防止重复提交 -
zhukewen_java:
这种方法的缺陷在于如果请求了两个save=true的方法,后面 ...
Spring MVC 用拦截器+token防止重复提交 -
byrgl5:
请问如果重复提交了三次呢?能避免吗?
Spring MVC 用拦截器+token防止重复提交 -
381895649:
是不是有病?
服务器被如下ip攻击,如何根据ip超找攻击来源 -
greatwqs:
最棒的10款MySQL管理工具
SELECT b, c, d,SUM(d) OVER(PARTITION BY b,c ORDER BY d) e FROM a
今天看到一个老兄的问题,
大概如下: 查询出部门的最低工资的userid 号 表结构: D号 工资 部门 userid salary dept 1 2000 1 2 1000 1 3 500 2 4 1000 2 有一个高人给出了一种答案: SELECT MIN (salary) OVER (PARTITION BY dept ) salary, dept FROM ss 运行后得到:
1000 1 1000 1 500 2 500 2 楼主那位老兄一看觉得很高深。大叹真是高人阿~
我也觉得这位老兄实在是高啊。 但我仔细研究一下发现那位老兄对PARTITION BY的用法理解并不深刻。并没有解决楼主的问题。 大家请看我修改后的语句 SELECT userid,salary,dept,MIN (salary) OVER (PARTITION BY dept ) salary FROM ss 运行后的结果:
userid salary dept MIN (salary) OVER (PARTITION BY dept ) 1 2000 1 1000 2 1000 1 1000 3 500 2 500 4 1000 2 500 大家看出端倪了吧。
高深的未必适合。 一下是我给出的答案: SELECT * FROM SS INNER JOIN (SELECT MIN(SALARY) AS SALARY, DEPT FROM SS GROUP BY DEPT) SS2 USING(SALARY,DEPT) 运行后的结果:
salary dept userid 1000 1 2 500 2 3 由此我想到总结一下group by和partition by的用法
group by是对检索结果的保留行进行单纯分组,一般总爱和聚合函数一块用例如AVG(),COUNT(),max(),main()等一块用。 partition by虽然也具有分组功能,但同时也具有其他的功能。 它属于oracle的分析用函数。 借用一个勤快人的数据说明一下: sum() over (PARTITION BY ...) 是一个分析函数。 他执行的效果跟普通的sum ...group by ...不一样,它计算组中表达式的累积和,而不是简单的和。 表a,内容如下: B C D 02 02 1 02 03 2 02 04 3 02 05 4 02 01 5 02 06 6 02 07 7 02 03 5 02 02 12 02 01 2 02 01 23 select b,c,sum(d) e from a group by b,c 得到:
B C E 02 01 30 02 02 13 02 03 7 02 04 3 02 05 4 02 06 6 02 07 7 而使用分析函数得到的结果是:
SELECT b, c, d, SUM(d) OVER(PARTITION BY b,c ORDER BY d) e FROM a B C E 02 01 2 02 01 7 02 01 30 02 02 1 02 02 13 02 03 2 02 03 7 02 04 3 02 05 4 02 06 6 02 07 7 结果不一样,这样看还不是很清楚,我们把d的内容也显示出来就更清楚了:
B C D E 02 01 2 2 d=2,sum(d)=2 02 01 5 7 d=5,sum(d)=7 02 01 23 30 d=23,sum(d)=30 02 02 1 1 c值不同,重新累计 02 02 12 13 02 03 2 2 02 03 5 7 02 04 3 3 02 05 4 4 02 06 6 6 02 07 7 7 |
发表评论
-
oracle jdbc链接SID和Service Name的区别
2018-12-24 09:27 1730application-dev.yml配置文件如下 eur ... -
Oracle批量操作
2018-04-24 15:52 503racle批量插入: Xml代码 & ... -
mybatis 需要注意的点 MyBatis 插入空值时,需要指定JdbcType (201
2018-03-07 10:19 1668Oracle数据库mybatis 插入空值时报错(with ... -
Oracle JDBC driver Maven配置
2018-03-05 13:41 1333问题: maven项目,spri ... -
ibatis结合Oracle的iterate insert批量插入
2018-02-27 13:50 1609ibatis批量插入oracle数据库 <inser ... -
数据库分页大全(oracle利用解析函数row_number高效分页)
2018-02-24 17:26 723最近在转换mysql项目到oracle项目,遇到mysql分 ... -
Mybatis结合Oracle的foreach insert批量插入
2018-02-24 14:17 3483最近在做将mysql数据库项目迁移到oracle数据库项目 ... -
oracle聚合函数汇总
2018-02-24 13:02 1687今天在做项目,讲mysql项目转换为oracle项目的时候, ... -
spring集中druid进行数据库监控
2018-02-11 17:52 1908Druid内置提供了一个StatViewServlet用于 ... -
mysql和oracle数据互相迁移
2018-02-11 15:53 854工作中,项目原本是mysql数据库 后台需要换成oracl ... -
[Navicat] 连接Oracle报错_Cannot load OCI DLL 87
2018-02-11 15:43 1948Navicat可以用来连接各 ... -
oracle批处理开启或者关闭服务
2013-12-16 22:53 1027机子上装着Oracle,但并不是很常要用到,所以把原先 ... -
oracle 正则表达式用法
2011-08-05 09:30 1742l 方括号表达示 方括号表达式 ... -
oracle case when 用法总结
2011-08-04 14:27 2976Oracle dbms_job package 用法小结 O ... -
Oracle语句优化30个规则详解
2011-08-04 11:07 2881select tab_name from tables ... -
oracle decode()函数用法总结
2011-08-04 10:06 3008·含义解释: decode(条件 ... -
Oracle中的Union,Union All,Intersect,Minus
2011-08-04 09:09 1176众所周知的几个结果 ... -
oracle executeimmediate用法小解
2011-08-03 09:16 1316EXECUTE IMMEDIATE 代替了以 ... -
oracle merge的用法
2011-08-02 17:53 1131MERGE语句是Oracle9i新增的语法,用来合并UPDAT ... -
Oracle 小知识 总结(一) .
2011-08-02 15:42 21671. 每天的8:00到23:00每隔5分钟执行一个sql语句的 ...
相关推荐
- `ROW_NUMBER() OVER (PARTITION BY CONTRACTID ORDER BY ALTER_DATE) AS rn`:此行代码使用`ROW_NUMBER()`函数为每个`CONTRACTID`分组内的记录分配一个行号,按照`ALTER_DATE`升序排列。 2. **最终查询**: - ...
通过合理运用SQL语句,特别是`GROUP BY`、`ORDER BY`以及分析函数等,可以有效地对数据进行分组、排序、聚合等操作。 #### 二、Oracle分组求Top N的方法 **1. 使用`RANK()`函数** - **基本语法**: `RANK()`函数...
它们允许用户在单个SQL查询中执行聚合操作,同时保持行的原始顺序,这是传统的GROUP BY函数无法实现的。分析函数的主要优势在于它们能够提供更灵活的数据处理和分析能力,特别适用于OLAP(在线分析处理)系统。 1. ...
在理解Oracle分析函数之前,首先需要了解它与传统的聚合函数(如SUM、AVG等)之间的区别: - **聚合函数**:对一组数据计算一个单一的结果,例如求和、平均值等。 - **分析函数**:可以为每个分组内的每一行数据...
##### 3.2 使用GROUP BY与聚合函数 当需要去除包含多个字段的记录中的重复项时,可以使用`GROUP BY`结合聚合函数如`COUNT()`等。 **示例:** 假设有一个员工表`EMPLOYEE`,包含`EMP_ID`, `DEPT_ID`, `NAME`等字段...
lead(rnFirst) over(partition by No order by rnFirst) rnNext from ( select a.No, a.Value, a.Name, row_number() over(order by a.No, a.Value desc) rnFirst from Test a ) tmpTable1 ) tmp...
分析函数与聚合函数的区别在于,聚合函数如SUM、COUNT等,它们对一组数据进行计算后只返回一行结果,而分析函数则允许对每个分组返回多行,这在处理复杂的报表和数据分析时非常有用。 分析函数的核心概念是“数据...
### Oracle 10g与9i中的多行合并为一行函数详解 在Oracle数据库系统中,经常需要将多个行的数据合并成单行显示,尤其是在处理报告或者需要将多个值组合成一个字符串的情况下。本文将详细介绍如何在Oracle 10g与9i...
这个例子中,虽然也使用了`ORDER BY`子句,但是没有使用`PARTITION BY`,这意味着所有的员工将被视为一个整体进行排序。因此,尽管`ORDER BY deptno, ename`会先按部门排序再按员工名字排序,但求和操作是在整个结果...
第五篇 分析函数简述 分析函数的语法结构比较复杂,但多数函数都具有相同的语法...Partition没啥说的,功能强大参数少,主要用于分组,可以理解成select中的group by。不过它跟select语句后跟的group by 子句并不冲突。
1. 传统的统计函数,如`COUNT()`,通常与`GROUP BY`一起使用来计算每个类别的数量。例如,我们可以计算每个班级的学生数量: ```sql SELECT t.class, COUNT(*) FROM t_student_score t GROUP BY t.class; ``` 如果...
10. 增强GROUP BY功能,使用GROUP BY扩展选项,如GROUPING SETS、CUBE和ROLLUP等,可以实现更复杂的聚合计算。 11. 分析函数(ANALYTICAL FUNCTIONS)是Oracle SQL的高级特性之一,允许在数据集上进行窗口计算,...
RANK() OVER (PARTITION BY callid, callerno, calleeno, devicetype ORDER BY waitbegin) - ROW_NUMBER() OVER (PARTITION BY callid, callerno, calleeno, devicetype ORDER BY waitbegin) AS rn FROM billr ...
GROUP BY a.employee_id, a.attendance_date, b.attendance_date HAVING COUNT(*) > 1 ORDER BY a.employee_id, start_date; ``` 这个查询会找出每个员工连续出勤的开始日期和结束日期,以及连续的天数。 3. **...
GROUP BY t.calendar_month_number ORDER BY t.calendar_month_number; ``` **解释**:在这个例子中,`CORR`函数计算了每个月销售收入和单位销售量的相关系数。通过`OVER (ORDER BY t.calendar_month_number)`子句...
LISTAGG(合并字段, 连接符) WITHIN GROUP(ORDER BY 合并字段的排序) OVER(PARTITION BY 分组字段) 2. 作为聚合函数,类似于 sum()、count()、avg() 等函数,使用方法相似: LISTAGG(合并字段, 连接符) WITHIN ...
- `ROW_NUMBER() over (partition by a.term_id order by a.user_deptno) rk`: 行号rk的计算基于`term_id`分组,按`user_deptno`升序排序。 2. **外层查询**: 然后,通过`t2.rk = 1`条件筛选出每个分组的第一条...
GROUP BY ROLLUP(BILL_MONTH, AREA_CODE, NET_TYPE); ``` CUBE与ROLLUP类似,但它不仅生成子集,还生成所有可能的组合,包括空的组合(即没有BILL_MONTH、AREA_CODE或NET_TYPE的情况)。 2. 排序函数 (RANK, DENSE...