OVERPARTITION BY使查询变慢

问题描述

我有数据

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

请报告,这会为您带来更好的效果吗?