我有三张table:
project: project_id, project_name
milestone: milestone_id, milestone_name
project_milestone: id, project_id, milestone_id, completed_date
我想从按project_id分组的project_milestone中获取第二高的completed_date和milestone_id。也就是说,我想获取每个项目的第二高的completed_date的milestone_id。对此,正确的查询是什么?
4条答案
按热度按时间gojuced71#
我认为您可以对
project_milestone
表和row_number()
执行任何操作:如果您需要包含 * 所有 * 项目,甚至是那些没有两个里程碑的项目,您可以使用
left join
:czq61nw12#
使用LATERAL(PG 9.3+)可以产生比窗口函数版本更好的性能。
x8goxv8g3#
实现这一点的最简单方法是使用窗口函数。
kx5bkwkv4#
您可以使用公用表表达式(CTE)来实现这一点。