【发布时间】:2014-06-18 12:54:00
【问题描述】:
我的数据库中有下表。
# 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)
每个人在工作中根据称为“道具”的不同属性/标准进行排名,绩效称为“排名”。如示例所示,该表包含 (name, prop) 的多个值。我想从一些要求中得到最好的候选人。例如。我需要一个拥有(prop=1 AND rank > 5) 和(prop=3 AND rank >= 8) 的候选人。然后我们必须能够根据他们的排名对候选人进行排序,以获得最佳候选人。
编辑:每个人都必须满足所有要求
如何在 SQL 中执行此操作?
【问题讨论】:
-
您能在问题中添加想要的结果吗?
-
这真的很初级。搜索“SELECT WHERE ORDER BY sql 示例”
-
您应该考虑数据规范化。如果我理解正确,您需要在这两个条件下进行标准自加入,然后是 order-by 语句。
-
如果候选人对选定的
prop有多个rank,你想得到什么?更具体地说,如果他们的队伍中有 一些 通过了您的条件 而 一些 则没有。 -
@EnnoShioji:这是一个误解。关系除法根本不是基本的。
标签: sql postgresql relational-division