[英]Sorting the sum of two subqueries
I'm wanting to sort the top performers based on the sum of two different queries. 我想根据两个不同查询的总和对效果最好的排序。 How can I do this? 我怎样才能做到这一点?
Let's say I'm tracking player stats for a tournament and have these models: 假设我正在跟踪比赛的球员统计数据,并具有以下模型:
class Player(db.Model):
id = db.Column(db.String(1024), primary_key=True)
name = db.Column(db.String(80))
dob = db.Column(TIMESTAMP, nullable=True)
start_ts = db.Column(TIMESTAMP, server_default=text('CURRENT_TIMESTAMP'), nullable=False)
end_ts = db.Column(TIMESTAMP, nullable=True)
school_id = db.Column(db.String(1024), db.ForeignKey('school.id'), nullable=False)
class School(db.Model):
id = db.Column(db.String(1024), primary_key=True)
name = db.Column(db.String(80))
address = db.Column(db.String(80))
state = db.Column(db.String(2))
class GameStats(db.Model):
id = db.Column(db.String(1024), primary_key=True)
date = db.Column(TIMESTAMP, server_default=text('CURRENT_TIMESTAMP'), nullable=False)
player_id = db.Column(db.String(1024), db.ForeignKey('school.id'), nullable=False)
scored = db.Column(Numeric(0, 0), nullable=False)
I'd like to produce a report formatted like this: 我想生成一个格式如下的报告:
player.id | player.name | total_score (scored from day 1 + day2) | school.name | school.state
for the top 10 players sorted by total score. 前10名球员的总得分。 What would the simplest way to do this be? 最简单的方法是什么? I'm fine using either python/sqlalchemy or sql. 我可以使用python / sqlalchemy或sql很好。
via SQL: 通过SQL:
SELECT
player.id,
player.name,
SUM(gamestats.scored) AS total_score,
school.name,
school.state
FROM
player
INNER JOIN school
ON player.school_id = school.id
INNER JOIN gamestats
ON player.id = gamestats.player_id
WHERE
gamestats.date >= <whatever day 1 is>
AND gamestats.date <= <whatever day 2 is>
GROUP BY
player.id,
player.name,
school.name,
school.state
ORDER BY
total_score DESC
LIMIT 10;
The method in which you limit the 10 results can change based on the type of SQL you're using. 限制10个结果的方法可以根据所使用的SQL类型而改变。 LIMIT 10 works with netezza, SELECT TOP 10 works with microsoft sql, etc, etc. LIMIT 10与netezza一起使用,SELECT TOP 10与Microsoft sql等一起使用,等等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.