问题描述
我有数据
report_id report_number event_id
"149317" 2 "3403"
"149315" 1 "3403"
"149314" 0 "3403"
"149320" 1 "3405"
"149319" 0 "3405"
"149327" 0 "3409"
预期:
在event_id
的基础上,在结果集中添加新列以显示该report_number
的最大值event_id
report_id report_number event_id count
"149317" 2 "3403" 2
"149315" 1 "3403" 2
"149314" 0 "3403" 2
"149320" 1 "3405" 1
"149319" 0 "3405" 1
"149327" 0 "3409" 0
为了获得上述预期结果,我使用了
SELECT *,MAX(report_number) OVER (PARTITION BY event_id) count FROM myTable;
结果正确,但这会使我的查询速度大大降低。还有其他方法可以得到上述结果吗?
编辑: 是否可以通过选择查询中的event_id提取最大报告编号组?
解决方法
GROUP BY通常比PARTITION快。
SELECT
event_id,MAX(report_number) AS report_number
FROM myTable
GROUP BY event_id
请报告,这会为您带来更好的效果吗?