首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何输出团队的评级?

如何输出团队的评级?
EN

Stack Overflow用户
提问于 2020-05-25 15:19:23
回答 1查看 39关注 0票数 1

我有两张桌子:team(team_id, name)performance(team_id, stage, place, date)。各队应该获得积分:第一名-10分,第二名5,第三-3分,4-7位1分。我需要输出球队的等级。我觉得应该是:

代码语言:javascript
复制
SELECT team.name, CASE place
WHEN 1 points + 10
WHEN 2 points + 5
...

预期理由:

代码语言:javascript
复制
|---------------------|------------------|
|      team.name      |     Points       |
|---------------------|------------------|
|          Rockers    |         34       |
|---------------------|------------------|
|          Batmans    |         23       |
|---------------------|------------------|
|          ...        |         ...      | 
|---------------------|------------------|
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-25 15:35:42

首先在表performance中进行聚合,以计算每个团队的有条件聚集的总分,然后将表team加入到结果中,并使用RANK()DENSE_RANK()分析函数对团队进行排序:

代码语言:javascript
复制
select t.team_id, t.name, 
       coalesce(p.points, 0) points,
       rank() over (order by coalesce(p.points, 0) desc) rnk
from team t left join (
  select team_id,
    sum(
      case
        when place = 1 then 10
        when place = 2 then 5
        when place = 3 then 3
        when place <= 7 then 1
        else 0
      end
    ) points
  from performance 
  group by team_id
) p on p.team_id = t.team_id
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62005504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档