hadoop - 删除列重复字符串值并提取 coulm 值的最大字符串值
问题描述
我想temp2
用max tot_duration
and填充count from temp1
。我使用以下代码执行此操作:
insert into analytics_db.charith_prepaid_bcell_temp2
(charged_party,cell_id,tot_duration,tband_count)
select A.*
FROM analytics_db.charith_prepaid_bcell_temp1 A,
(SELECT A.charged_party,B.B,MAX(A.tot_duration) C-- MAX COUNT FOR MAX TIMA BAND CELL
FROM analytics_db.charith_prepaid_bcell_temp1 A,
(SELECT charged_party,MAX(tband_count) B ---- MAX TIME BAND COUNT
FROM analytics_db.charith_prepaid_bcell_temp1
WHERE NVL(tot_duration,0) >0
GROUP BY charged_party) B
WHERE NVL(tot_duration,0) >0 AND A.charged_party = B.charged_party AND A.tband_count = B.B
GROUP BY A.charged_party,B.B) C
WHERE A.charged_party = C.charged_party AND A.tot_duration= C.C AND A.tband_count = C.B
但是在temp2
不同的单元格 id 和相同的地方有tot_duration
重复tband_count
的条目charged_party
。如何修复代码以仅获取只有一个具有最大值的条目的条目cell_id
?
谢谢
解决方案
这可以通过排名函数来完成,例如row_number
.
select charged_party,cell_id,tot_duration,tband_count
from (select t.*
,row_number() over(partition by tot_duration,tband_count order by cell_id desc) as rnum
from tbl t
) t
where rnum = 1
推荐阅读
- javascript - 为什么我需要使用 this.props.user.user.displayName 而不是 this.props.user.displayName?反应
- php - PHP 日期格式返回不正确的后缀 ('S')
- python - Python 解析 GitHub 文件
- outlook - iCal 文件不会将 VALARM 警报作为 Internet 日历导入 Outlook
- asp.net - System.Net.HttpWebRequest.GetResponse() 错误“您必须在调用 [Begin]GetResponse 之前将 ContentLength 字节写入请求流。”
- mule - Mule 3.9.1 数据库参数化查询不返回数据
- node.js - 错误:运行 jhipster 命令后 npm install 中 JSON 输入意外结束
- smalltalk - VoyageMongo:在持久类中覆盖 #= 可以吗?
- mongodb - Mongoose - 使用 findOneAndUpdate 和数组过滤器仅返回更新的项目
- python - 制作具有多个跟踪的 Plotly Scattermapbox 的功能失败,Plotly,列表理解