根据多个条件,每组选择1行

时间:2020-03-30 19:53:07

标签: sql postgresql

在大型数据集中,我试图根据两个条件为每个property_id选择1行

  • 第一:具有最新recording_date
  • 的行
  • 秒:如果最近的recording_date被多条记录共享,则采用最高售价(如果有)的记录

数据示例如下:表名称:deeds

id                                   | property_id                          | recording_date | sale_price 
9bf7de90-0b3f-40b0-83bb-9392831a03a3 | 002bb6d2-e064-4eb4-adc2-45713836dfe1 | 2005-12-22     | 535000     
30725c07-b4ab-484b-b09e-30592716340b | 002bb6d2-e064-4eb4-adc2-45713836dfe1 | 2017-09-27     |            
c194b85a-3fb3-46e0-94f0-eeaba1e961e4 | 002bb6d2-e064-4eb4-adc2-45713836dfe1 | 2017-09-27     | 566000     

(如果重要的话,我正在使用Postgres)

1 个答案:

答案 0 :(得分:2)

使用distinct on

select distinct on (property_id) t.*
from t
order by property_id, recording_date desc, sales_price desc nulls last