我在 sqlite 数据库中有一个名为
cc_results
的比赛表。
该表有 4 列:first_name、Last_name、Position、team_code。位置栏有每个运动员在比赛中的排名。
我想做一个sql语句,根据每个团队的位置选择前3名,然后将这3个团队的位置相加,然后按升序对团队进行排名。这如何在 SQL 中完成?
我已经尝试过:
SELECT team_code, Sum(place)
FROM cc_results
Group by team_code
Order by sum(place) asc
导致:
team_code Sum(place)
PGS 2
TPS 11
MDC 13
SJP 15
GCA 18
SDTB 18
SMCS 19
SJG 20
SJC 24
BOCA 26
WC 44
AHS 77
SAAPS 91
我需要的是能够为每个团队选择前 3 个位置并将其相加。如果一支球队的人数少于 3 人,则不会对他们进行求和;如果他们的人数超过 3 人,则只对前 3 名进行求和。然后它们必须按升序排序/排名
使用 TMP_1 AS (选择团队代码 来自 CC_RESULT 按团队代码分组 计数 (*) >= 3 ), TMP_2 AS( 选择 * ,RANK() OVER(按团队代码分区,按位置描述排序)作为 MEMBER_RANK 来自 CC_RESULT 其中 1 = 1 AND TEAM_CODE IN(在 TMP_1 中选择 TEAM_CODE) ), TMP_3AS ( 选择 * 来自 TMP_2 其中 1 = 1 和会员_等级 <= 3 ) SELECT TEAM_CODE ,SUM(MEMBER_RANK) AS TOTAL_RANK FROM TMP_3 WHERE 1 = 1 GROUP BY TEAM_CODE ORDER BY SUM(MEMBER_RANK) ASC
希望对您有帮助。抱歉,格式不正确,因为我的手机设备不支持 snipet 编辑器