`
yxx676229549
  • 浏览: 73825 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

rank() over

 
阅读更多

查询同一个用户下,最近时间订购(最近一次操作) 的集合

 

不适用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的使用

    介绍rank() over()分析函数和 row_number() over 的使用实例及其异同点

    Oracle中rank,over partition函数的使用方法

    在Oracle数据库中,`RANK()`, `OVER()`, `PARTITION BY` 是窗口函数的重要组成部分,它们在数据处理和分析中发挥着至关重要的作用。本文将深入探讨这些函数的用法,通过实例来帮助理解它们的功能和应用场景。 首先...

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

    1. `RANK() OVER (PARTITION BY ... ORDER BY ...)`: 当在每个分区(由`PARTITION BY`定义)内按照指定的`ORDER BY`字段排序时,`RANK()`会为每个记录分配一个唯一的排名。如果有并列的情况,即多个记录具有相同的...

    ROW_NUMBER、RANK、DENSE_RANK 和 NTILE

    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开发之分析函数(Rank, Dense_rank, row_number)

    在前面一篇《Oracle开发之分析函数简介Over》,我们认识了分析函数的基本应用,现在我们再来考虑下面几个问题: ①对所有客户按订单总额进行排名 ②按区域和客户订单总额进行排名 ③找出订单总额排名前13位的客户 ④...

    over函数的使用

    `over`函数通常与`row_number()`、`rank()`、`dense_rank()`等函数配合使用,以实现对数据的复杂排序和分组需求。 ### `over(partition by)` 函数详解 `over(partition by)`用于将数据集划分为不同的分区或子集,...

    分析函数ROW_NUMBER、RANK、DENSE_RANK的用法

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

    SQL2005 四个排名函数(row_number、rank、dense_rank和ntile)的比较

    select dense_rank() over(order by field1),* from t_table order by field1 ``` 查询结果如图8所示(假设图8展示了使用dense_rank后的序号分布)。 四、ntile ntile函数则有所不同,它不是为每行分配一个唯一的...

    oracle_排列rank()函数

    RANK() OVER (PARTITION BY deptno ORDER BY sal DESC NULLS LAST) AS rank FROM emp; ``` 在这个例子中,`PARTITION BY deptno`指定了我们希望在每个部门内部进行排名,而`ORDER BY sal DESC NULLS LAST`则定义了...

    ORACLE_OVER函数

    OVER函数通常与窗口函数(如RANK(), DENSE_RANK(), ROW_NUMBER(), SUM(), AVG()等)一起使用。其基本语法形式如下: ```sql <window_function> OVER ( [window_spec] ) ``` 其中`<window_function>`代表具体的窗口...

    Orcal中over函数.doc

    - `function_name`:窗口函数名称,如SUM、AVG、COUNT、RANK等。 - `expression`:用于计算的表达式或列名。 - `PARTITION BY`:可选,用于指定数据的分组方式,即定义窗口的边界。 - `ORDER BY`:可选,用于指定...

    ROW_NUMBER() OVER函数的基本用法

    ROW_NUMBER() OVER (PARTITION BY deptid ORDER BY salary DESC) AS rank FROM employee ORDER BY deptid, rank; ``` 结果: empid deptid salary rank ----------- ----------- ---------------------------...

    oracle分析函数over_及开窗函数.txt

    本文将详细介绍Oracle中的`OVER`子句以及几种常用的开窗函数,包括`ROW_NUMBER()`, `RANK()`, `DENSE_RANK()`和`LAG()`等。 #### 二、基本概念 - **`OVER`子句**:`OVER`子句用于指定分析函数的作用范围,它可以...

    Oracle开发的over函数

    - **等级(ranking)函数**:用于确定行在某个范围内的位置,如RANK、DENSE_RANK等。 - **开窗(windowing)函数**:用于计算不同的累计值,如SUM、COUNT、AVG等,作用于数据的一个窗口上。 - **制表(reporting)函数*...

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

    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` 的降序排列。结果会...

    SQL server中row_number(),rank(),dense_rank()排序

    SELECT Sno, Cno, Grade, RANK() OVER (ORDER BY Grade DESC) AS Rank FROM SC; ``` 如果`Grade`列中有两个或更多相同分数,这些行将获得相同的`Rank`值。 最后,`dense_rank()`函数与`rank()`类似,但它不会跳过...

Global site tag (gtag.js) - Google Analytics