[英]SQL sort based on sum of various columns
我有一个MS-SQL游戏结果表,其中包含主队,主队得分,客队和客队得分。 我试图查询首先排序的队伍,胜利和损失,总胜利(降序)然后是总损失(升序)。 该表不包含赢或输列。 必须根据分数计算胜利和损失。 如果我需要创建视图或临时表,如何使用团队,胜利和损失创建该视图?
假设您可以在查询中提取该信息,则可以在ORDER BY
子句中使用聚合:
ORDER BY
SUM(win) DESC
,SUM(loss) ASC
编辑 :更新评论
只有存储的分数,您将要么使用临时表或CTE(取决于您使用的DBMS,如果支持它们)首先创建一个包含团队及其中的胜负的表,以及然后你可以从那里SELECT
和相应的ORDER
。
SELECT *
FROM MyTable
WHERE ...
ORDER BY SUM(win) DESC, SUM(loss) ASC
有关更详细的答案,请提供架构和示例数据。
家庭作业?
无论如何,您可以通过跟随订单的列来指定SQL语句中的排序顺序。 例如,
select x, y, z from table order by x asc, y desc, z asc
select
teamName,
'wins' =
case
when wins is null then 0
else wins
end,
'losses' =
case
when losses is null then 0
else losses
end
from
teams
left join
(
select
a.wins as wins,
b.losses as losses,
'team' =
case
when a.team is null then b.team
else a.team
end
from
(
select
homeTeam as team,
sum(wins) as wins
from
(
select
homeTeam,
count(*) as wins
from
results
where
homeScore > awayScore
group by
homeTeam
union all
select
awayTeam,
count(*) as wins
from
results
where
homeScore < awayScore
group by
awayTeam
) a
group by homeTeam
) a
full outer join
(
select
homeTeam as team,
sum(losses) as losses
from
(
select
homeTeam,
count(*) as losses
from
results
where
homeScore < awayScore
group by
homeTeam
union all
select
awayTeam,
count(*) as losses
from
results
where
homeScore > awayScore
group by
awayTeam
) a
group by
homeTeam
) b
on a.team = b.team
) c
on teams.id = c.team
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.