查询同一个用户下,最近时间订购(最近一次操作) 的集合
不适用rank() over
SELECT COUNT(*) FROM ( SELECT t1.*, t2.createtime FROM i_Order_Relation_Log t1, i_ismp_sp_engine_log t2 WHERE t1.streamingno = t2.streamingno ) tt1 WHERE tt1.createtime = ( SELECT MAX(createtime) FROM ( SELECT t1.*, t2.createtime FROM i_Order_Relation_Log t1, i_ismp_sp_engine_log t2 WHERE t1.streamingno = t2.streamingno ) tt2 WHERE tt2.userid = tt1.userid ) AND tt1.optype = '0'
查询时间:多次测试大概在 0.8-0.9 之间
适用rank() over
SELECT COUNT(*) FROM ( SELECT t.*, RANK() OVER (PARTITION BY userid ORDER BY createtime DESC) AS ran FROM ( SELECT t1.*, t2.createtime FROM i_Order_Relation_Log t1, i_ismp_sp_engine_log t2 WHERE t1.streamingno = t2.streamingno ) t ) tt WHERE tt.ran = 1 AND tt.optype = '0'
查询时间:多次测试大概在 1.0-1.1 之间
相关推荐
介绍rank() over()分析函数和 row_number() over 的使用实例及其异同点
在Oracle数据库中,`RANK()`, `OVER()`, `PARTITION BY` 是窗口函数的重要组成部分,它们在数据处理和分析中发挥着至关重要的作用。本文将深入探讨这些函数的用法,通过实例来帮助理解它们的功能和应用场景。 首先...
1. `RANK() OVER (PARTITION BY ... ORDER BY ...)`: 当在每个分区(由`PARTITION BY`定义)内按照指定的`ORDER BY`字段排序时,`RANK()`会为每个记录分配一个唯一的排名。如果有并列的情况,即多个记录具有相同的...
SELECT RANK() OVER(ORDER BY score DESC) AS rank, speaker, track, score FROM SpeakerStats ``` rank speaker track score ------ ------ ------ ----- 1 Jessica Dev 9 1 Ron Dev 9 1 Suzanne DB 9 4 Kathy Sys...
在前面一篇《Oracle开发之分析函数简介Over》,我们认识了分析函数的基本应用,现在我们再来考虑下面几个问题: ①对所有客户按订单总额进行排名 ②按区域和客户订单总额进行排名 ③找出订单总额排名前13位的客户 ④...
`over`函数通常与`row_number()`、`rank()`、`dense_rank()`等函数配合使用,以实现对数据的复杂排序和分组需求。 ### `over(partition by)` 函数详解 `over(partition by)`用于将数据集划分为不同的分区或子集,...
SELECT c.FirstName, c.LastName, RANK() OVER (ORDER BY SalesYTD DESC) AS 'Rank', s.SalesYTD FROM Sales.SalesPersons JOIN Person.Contact cons ON s.SalesPersonID = c.ContactID WHERE TerritoryID IS NOT ...
select dense_rank() over(order by field1),* from t_table order by field1 ``` 查询结果如图8所示(假设图8展示了使用dense_rank后的序号分布)。 四、ntile ntile函数则有所不同,它不是为每行分配一个唯一的...
RANK() OVER (PARTITION BY deptno ORDER BY sal DESC NULLS LAST) AS rank FROM emp; ``` 在这个例子中,`PARTITION BY deptno`指定了我们希望在每个部门内部进行排名,而`ORDER BY sal DESC NULLS LAST`则定义了...
OVER函数通常与窗口函数(如RANK(), DENSE_RANK(), ROW_NUMBER(), SUM(), AVG()等)一起使用。其基本语法形式如下: ```sql <window_function> OVER ( [window_spec] ) ``` 其中`<window_function>`代表具体的窗口...
- `function_name`:窗口函数名称,如SUM、AVG、COUNT、RANK等。 - `expression`:用于计算的表达式或列名。 - `PARTITION BY`:可选,用于指定数据的分组方式,即定义窗口的边界。 - `ORDER BY`:可选,用于指定...
ROW_NUMBER() OVER (PARTITION BY deptid ORDER BY salary DESC) AS rank FROM employee ORDER BY deptid, rank; ``` 结果: empid deptid salary rank ----------- ----------- ---------------------------...
本文将详细介绍Oracle中的`OVER`子句以及几种常用的开窗函数,包括`ROW_NUMBER()`, `RANK()`, `DENSE_RANK()`和`LAG()`等。 #### 二、基本概念 - **`OVER`子句**:`OVER`子句用于指定分析函数的作用范围,它可以...
- **等级(ranking)函数**:用于确定行在某个范围内的位置,如RANK、DENSE_RANK等。 - **开窗(windowing)函数**:用于计算不同的累计值,如SUM、COUNT、AVG等,作用于数据的一个窗口上。 - **制表(reporting)函数*...
SELECT name, class, s, RANK() OVER (PARTITION BY class ORDER BY s DESC) mm FROM t2; ``` 这里,`PARTITION BY class` 表示按 `class` 分区,`ORDER BY s DESC` 则是在每个分区内按照 `s` 的降序排列。结果会...
SELECT Sno, Cno, Grade, RANK() OVER (ORDER BY Grade DESC) AS Rank FROM SC; ``` 如果`Grade`列中有两个或更多相同分数,这些行将获得相同的`Rank`值。 最后,`dense_rank()`函数与`rank()`类似,但它不会跳过...