`
demitong
  • 浏览: 7193 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PARTITION BY分组

阅读更多
最近看了PARTITION BY分组,感觉很高深,又不常用到,遂记录下来,留作日后装B(貌似子查询联合查询也能解决),或者懂的多了,再来回顾吧...

不多说了,直接贴研究好的代码

销售报表
  SELECT   b,   c,   d,SUM(d)   OVER(PARTITION   BY   b,c   ORDER   BY   d)   e   FROM   a  
  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
ps:计算函数中的累积和,因为自己是英文盲...放一个简单示例方便以后看好了
年度销售报表
select ID,店铺名称,时间,月销售额度,SUM(月销售额度) over (PARTITION BY 店铺名称 ORDER BY 时间) from 销售额汇总表 where 时间 BETWEEN 2011 AND 2012

原帖:
http://blog.csdn.net/java_greenhand/article/details/6274015
============

另一种应用方式:
SELECT * FROM (SELECT row_number() OVER (PARTITION BY siteid ORDER BY bookid) as rownum, * FROM novel_bookchapterinfo) t WHERE t.rownum = 1
获取不重复的(图书出版社)地址?很有趣的写法
原帖:
http://www.cnblogs.com/aspnethot/archive/2010/03/02/1676245.html
分享到:
评论

相关推荐

    sqlserver巧用row_number和partition by分组取top数据

    分组取TOP数据是T-SQL中的常用查询, 如学生信息管理系统中取出每个学科前3名的学生。这种查询在SQL Server 2005之前,写起来很繁琐,需要用到临时表关联查询才能取到。SQL Server 2005后之后,引入了row_number()...

    SQLServer中Partition By及row_number 函数使用详解

    `PARTITION BY` 关键字是分析函数的一个关键组成部分,它的主要作用是对结果集进行分组。在没有指定的情况下,`PARTITION BY` 将默认对整个结果集进行一个大分区。这与`GROUP BY` 有所不同,`GROUP BY` 主要是用于对...

    Oracle查询中OVER (PARTITION BY ..)用法

    总的来说,`OVER (PARTITION BY ..)`提供了一种灵活的方式来处理分组数据,可以进行排名、计算累计和、移动平均等复杂操作。在实际工作中,结合`RANK()`、`DENSE_RANK()`、`MIN()`和`MAX()`等函数,我们可以更高效地...

    T-SQL高级查询

    # partition by分组子句 可以完成对分组的数据进行增加排序,partition by可以与以上三个函数联合使用。 利用partition by按照班级名称分组,学生id排序 select s.id, s.name, cid, c.name, row_number() over...

    row_number,根据多个字段过滤,partition by

    - **字符串拼接**:在`PARTITION BY`子句中使用了字符串拼接操作(`||`),这使得即使在某字段值为空的情况下也能正确分组。 - **日期格式化**:通过`TO_CHAR(date, 'YYYYMMDD')`将日期字段转换为字符串形式,便于...

    Oracle 语法之 OVER (PARTITION BY ..) 及开窗函数(转载)

    `OVER (PARTITION BY ...)` 的主要作用是定义一个分区集合,即对数据进行分组,然后在每个分区内执行相应的操作。例如,在以下示例中,我们根据 `class` 进行分区,并对每个分区内的 `s` 进行排名: ```sql SELECT ...

    详解partition by和group by对比

    在SQL查询中,`GROUP BY` 和 `PARTITION BY` 都是用来处理数据分组的,但它们在功能和使用场景上有所不同。首先,`GROUP BY` 是一个基础的分组函数,它根据指定的列将数据进行分组,并且通常与聚合函数如 `SUM`, `...

    【Oracle】LISTAGG函数的使用.pdf

    LISTAGG(合并字段, 连接符) WITHIN GROUP(ORDER BY 合并字段的排序) OVER(PARTITION BY 分组字段) 2. 作为聚合函数,类似于 sum()、count()、avg() 等函数,使用方法相似: LISTAGG(合并字段, 连接符) WITHIN ...

    分组后分组合计以及总计SQL语句(稍微整理了一下)

    SELECT *, ROW_NUMBER() OVER(PARTITION BY 分组字段 ORDER BY 排序字段) AS rn FROM 表 ) AS T WHERE rn = 1 ``` - Oracle中,可以使用`RANK()`或`DENSE_RANK()`函数: ```sql SELECT * FROM ( SELECT *...

    sql数据库基础知识整理,常用函数及常用语法

    例如,`ROW_NUMBER() OVER (PARTITION BY 分组字段 ORDER BY 排序字段)`会根据分组字段和排序字段生成行号。`CASE`语句则用于条件判断,`UNION`用于合并两个查询的结果,`UNION ALL`则包含所有结果,包括重复项。 ...

    数据库oracle基础学习

    - **`OVER()`**: 用于定义窗口函数的范围,例如`RANK() OVER(PARTITION BY 分组字段 ORDER BY 排序字段)`。 - **多表查询** - **主键**: 用来唯一标识表中的每一行记录。 - **外键**: 用来在不同表之间建立联系...

    SQL Server 2012 开窗函数

    废话不多说了,直接给大家贴代码了,具体代码如下所示: -- 开窗函数:在结果集的基础上进一步处理(聚合操作) ...-- Partition By 分组统计数量 -- 根据性别分组后,统计 SELECT COUNT(*) OVER ( PARTITION

    MYSQL 通过分区(Partition)提升MySQL性能

    PARTITION BY RANGE (YEAR(c3)) ( PARTITION p0 VALUES LESS THAN (1995), PARTITION p1 VALUES LESS THAN (1996), PARTITION p2 VALUES LESS THAN (1997), PARTITION p3 VALUES LESS THAN (1998), PARTITION ...

    Oracle中分组后拼接分组字符串.pdf

    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...

    oracle排名函数的使用方法分享

    格式为:`函数() OVER (PARTITION BY 分组列 ORDER BY 排序列 [ASC|DESC])` 在提供的示例中,我们看到一个名为 `GetCompetitionRanking` 的过程,它接受用户ID和比赛ID作为输入,然后返回用户的比赛排名和个人组...

    Oracle中分组后拼接分组字符串[文].pdf

    select No, Value, Name, rnFirst, 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) ...

    oracle分组排序统计高级用法

    通过合理运用SQL语句,特别是`GROUP BY`、`ORDER BY`以及分析函数等,可以有效地对数据进行分组、排序、聚合等操作。 #### 二、Oracle分组求Top N的方法 **1. 使用`RANK()`函数** - **基本语法**: `RANK()`函数...

Global site tag (gtag.js) - Google Analytics