我的数据库中有下表。
# select * FROM matches; name | prop | rank ------+------+------- carl | 1 | 4 carl | 2 | 3 carl | 3 | 9 alex | 1 | 8 alex | 2 | 5 alex | 3 | 6 alex | 3 | 8 alex | 2 | 11 anna | 3 | 8 anna | 3 | 13 anna | 2 | 14 (11 rows)
每个人在工作中均按不同的属性/标准(称为“ prop”)进行排名,而绩效则称为“等级”。如示例所示,该表包含(name,prop)的多个值。我想从某些要求中获得最佳人选。例如,我需要具有(prop=1 AND rank > 5)和的候选人(prop=3 AND rank >= 8)。然后,我们必须能够按候选人的排名对他们进行排序,以获得最佳候选人。
(prop=1 AND rank > 5)
(prop=3 AND rank >= 8)
编辑:每个人都必须满足所有要求
如何在SQL中执行此操作?
select x.name, max(x.rank) from matches x join ( select name from matches where prop = 1 AND rank > 5 intersect select name from matches where prop = 3 AND rank >= 8 ) y on x.name = y.name group by x.name order by max(rank);