为每行选择最大值-Oracle Sql
我有一个疑问。 我需要找到特定客户列表的最新情况,让我们简单地说,我需要100个客户中的3个。 我需要检查他们最后一次拿到奖金是什么时候。 该表将是:为每行选择最大值-Oracle Sql,sql,oracle,greatest-n-per-group,Sql,Oracle,Greatest N Per Group,我有一个疑问。 我需要找到特定客户列表的最新情况,让我们简单地说,我需要100个客户中的3个。 我需要检查他们最后一次拿到奖金是什么时候。 该表将是: EVENT_TBL 字段:帐户ID,事件日期,奖金ID 您能建议一种获取最新(MAX)事件日期的方法吗 我正在使用SELECT…IN指定帐户ID,但不确定如何使用MAX、分组依据等(如果需要)。使用行号()分析功能: SELECT * FROM ( SELECT t.*, ROW_NUMBER() OVER ( PAR
EVENT_TBL
字段:帐户ID
,事件日期
,奖金ID
您能建议一种获取最新(MAX
)事件日期的方法吗
我正在使用SELECT…IN
指定帐户ID,但不确定如何使用MAX
、分组依据
等(如果需要)。使用行号()
分析功能:
SELECT *
FROM (
SELECT t.*,
ROW_NUMBER() OVER ( PARTITION BY Account_id ORDER BY event_date DESC ) AS rn
FROM EVENT_TBL t
WHERE Account_ID IN ( 123, 456, 789 )
)
WHERE rn = 1
使用行编号()
分析功能:
SELECT *
FROM (
SELECT t.*,
ROW_NUMBER() OVER ( PARTITION BY Account_id ORDER BY event_date DESC ) AS rn
FROM EVENT_TBL t
WHERE Account_ID IN ( 123, 456, 789 )
)
WHERE rn = 1
你可以试试
with AccountID_Max_EVENT_DATE as (
select AccountID, max(EVENT_DATE) MAX_D
from EVENT_TBL
group by AccountID
)
SELECT E.*
FROM EVENT_TBL E
INNER JOIN AccountID_Max_EVENT_DATE M
ON (E.AccountID = M.AccountID AND M.MAX_D = E.EVENT_DATE)
你可以试试
with AccountID_Max_EVENT_DATE as (
select AccountID, max(EVENT_DATE) MAX_D
from EVENT_TBL
group by AccountID
)
SELECT E.*
FROM EVENT_TBL E
INNER JOIN AccountID_Max_EVENT_DATE M
ON (E.AccountID = M.AccountID AND M.MAX_D = E.EVENT_DATE)
示例代码和期望结果?示例代码和期望结果?这使用自连接,可能需要两次表扫描。此外,如果有多个条目具有相同的(最大)日期,则每个帐户将返回多行。这将使用自联接,可能需要两次表扫描。此外,如果有多个条目具有相同的(最大)日期,则每个帐户将返回多行。它返回:“rn无效标识符)@MorganForever是否将作为rn
部分包含?它返回:“rn无效标识符)@MorganForever是否将作为rn
部分包含?