【发布时间】:2016-01-23 01:49:22
【问题描述】:
我正在编写一些代码来优化 NFL 奇幻选秀。因为数据库相当大,我的首要任务是通过删除我知道快速不会构成最佳草案的一部分的条目来缩小它的大小。
每个玩家都有我必须支付的薪水,以及预计的总幻想点数。例如,以下是可能的防御者列表的一部分:
Id Position FPPG Salary
0 12542 D 3.8 4000
1 12534 D 7.5 4100
2 12548 D 4.6 4200
3 12532 D 8.2 4300
4 12547 D 8.4 4400
5 12545 D 9.2 4500
6 12525 D 9.0 4600
7 12553 D 12.3 4700
8 12544 D 10.8 4800
9 12531 D 17.0 5000
我已经编写了 SQL 查询,这些查询将消除受伤的球员,并将在每个薪水价位上消除除预计得分最高的球员之外的所有球员:
d_db = sqldf('SELECT Id, Position, FPPG, Salary from d_db\
WHERE FPPG = (SELECT max(FPPG) from d_db as db where db.Salary = d_db.Salary) ORDER By Salary',locals())
我现在的任务是消除所有存在更便宜且预计会获得更多积分的玩家。例如,在上面的列表中,第 2 行是无用的,可以删除,因为第 1 行既便宜又具有更高的 FPPG。
换句话说,当数据库按薪水排序时,我想删除 FPPG 列未按升序排序的所有行。理想的最终结果是:
Id Position FPPG Salary
0 12542 D 3.8 4000
1 12534 D 7.5 4100
2 12532 D 8.2 4300
3 12547 D 8.4 4400
4 12545 D 9.2 4500
5 12553 D 12.3 4700
6 12531 D 17.0 5000
有什么建议吗?我似乎无法找出很好地涵盖此内容的 DELETE 语句的 WHERE 条件,所以也许这比单个查询更复杂?
【问题讨论】:
标签: sql python-2.7 pandas