我有一张包含以下类似数据的表格:
Agent | TCV | Parent AccountID | AccountID | Month
------+-----+------------------+-----------+--------
John | 100 | ABC12345 | Sept13445 | 2
John | 200 | ABC12345 | Sept345 | 2
John | 150 | CDE12345 | Sept546 | 2
John | 200 | FTE1456 | Oct3467 | 2
John | 100 | ABC12345 | Sept13445 | 3
John | 200 | ABC12345 | Sept345 | 3
John | 150 | CDE12345 | Sept546 | 3
John | 200 | FTE1456 | Oct3467 | 3
我需要的是一种按代理显示分组排名的方法,然后每个代理显示每月的父accounrDID。这个想法是在导出中,有一个代理,TCV,parentaccountDID和月的列。
因此,如果所有代理都有10个parentaccountDID(但每个代理下可能有多个accountDID),那么它将按parentAccountDID的分组TCV对它们进行排名。因此,基于第2个月的分组TCV,John的10个parentaccountDID将有10行数据,然后基于第3个月的分组TCV等10个parentaccountDID的10行数据等等。
答案 0 :(得分:0)
如果您有Oracle SQL数据库 尝试以下查询,它可能会根据需要帮助您:
select Agent ,TCV ,ParentAccountID,Month,count(1) from table group by Agent ,TCV ,ParentAccountID,Month
order by 5 desc
你也可以查看(谷歌)“密集等级”功能,如下所示:
select Agent ,TCV ,ParentAccountID,Month,dense rank over(Agent ,TCV ,ParentAccountID,Month) from table group by Agent ,TCV ,ParentAccountID,Month
对值进行排名并对结果进行排序。
答案 1 :(得分:0)
SELECT agent, tcv, parent_accnt_id, accnt_id, curr_month
, ROW_NUMBER() OVER (PARTITION BY curr_month, parent_accnt_id ORDER BY curr_month) rnk
FROM your_table
/
根据您的数据,这就是您所获得的:
AGENT TCV PARENT_ACCNT_ID ACCNT_ID CURR_MONTH RNK
------------------------------------------------------------------
John 100 ABC12345 Sept13445 2 1
John 200 ABC12345 Sept345 2 2
John 150 CDE12345 Sept546 2 1
John 200 FTE1456 Oct3467 2 1
John 100 ABC12345 Sept13445 3 1
John 200 ABC12345 Sept345 3 2
John 150 CDE12345 Sept546 3 1
John 200 FTE1456 Oct3467 3 1