puzhibing
2024-03-04 7e7f901b2172281dc294dfbc67e6ad00625f09f4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsh.communityWorldCup.mapper.WorldCupCompetitorMapper">
 
    <select id="getNumberOfGamesRanked" resultType="map">
        select * from (
            select
            CASE WHEN participantType = 2 THEN 0 ELSE 1 END as participantType,
            participantId,
            count(*) as num
            from t_world_cup_competitor
            where 1 = 1
            <if test="null != appUserIds and appUserIds.size() > 0">
                and appUserId in
                <foreach collection="appUserIds" item="item" index="index" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
            group by participantType, participantId
        ) as aa order by aa.num desc
    </select>
 
 
 
    <select id="getMatchRecord" resultType="com.dsh.communityWorldCup.model.MatchRecordList">
        select
            b.`name`,
            a.ourScore,
            a.opponentScore,
            DATE_FORMAT(a.startTime, '%Y-%m-%d %H:%i') as startTime,
            a.matchResult,
            (a.participationIntegral + a.winIntegral) as award
        from t_world_cup_competitor a
        left join t_world_cup b on (a.worldCupId = b.id)
        where a.participantId = #{item.id} and a.participantType = #{item.isStudent}
        order by a.startTime desc limit #{item.pageNo}, #{item.pageSize}
    </select>
 
 
 
 
    <select id="getWorldCupRank" resultType="java.util.Map">
        select * from (
            select
            a.participantType,
            a.participantId,
            a.appUserId,
            a.num as totalSession,
            (ifnull(b.num, 0) / a.num * 100) as winRate
            from (
                select
                participantType,
                participantId,
                appUserId,
                count(*) as num
                from t_world_cup_competitor
                where 1 = 1
                <if test="null != item.year">
                    and DATE_FORMAT(a.startTime, '%Y') = #{item.year}
                </if>
                <if test="null != appUserIds and appUserIds.size() > 0">
                    and appUserId in
                    <foreach collection="appUserIds" item="iten" index="index" open="(" separator="," close=")">
                        #{iten}
                    </foreach>
                </if>
                group by participantType, participantId, appUserId
            ) as a
            left join (
                select
                participantType,
                participantId,
                appUserId,
                count(*) as num
                from t_world_cup_competitor
                where matchResult = 1
                <if test="null != item.year">
                    and DATE_FORMAT(a.startTime, '%Y') = #{item.year}
                </if>
                <if test="null != appUserIds and appUserIds.size() > 0">
                    and appUserId in
                    <foreach collection="appUserIds" item="iten" index="index" open="(" separator="," close=")">
                        #{iten}
                    </foreach>
                </if>
                group by participantType, participantId, appUserId
            ) as b on (a.participantId = b.participantId and a.participantType = b.participantType)
        ) as aa
        <if test="null != item.sort and item.sort == 1">
            order by aa.totalSession desc
        </if>
        <if test="null != item.sort and item.sort == 2">
            order by aa.winRate desc
        </if>
    </select>
 
</mapper>