对不同列中的sql记录进行计数

xyhw6mcr  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(401)

我正在开发一个投票/竞赛系统(php和sql),在这个系统中,用户需要选择他们最喜欢的5位候选人。他们最喜欢的一号得5分,他们最喜欢的二号得4分等等。
投票示例:
c=候选人

C_3 5-points
C_1 4-points
C_5 3-points
C_2 2-points
C_4 1-points

所有投票将存储在mysql表中,如sow:

ID 5_POINTS 4_POINTS 3_POINTS 2_POINTS 1_POINTS
1  C_4      C_2      C_1      C_5      C_3
2  C_5      C_3      C_2      C_4      C_1
3  C_4      C_1      C_3      C_5      C_2
4  C_1      C_4      C_2      C_3      C_5

基于上述投票的排名应为:

1. Candidate 4 - 16 Points
2. Candidate 1 - 13 Points
3. Candidate 2 - 11 Points
4. Candidate 3+5 - 10 Points

怎样才能得到上面这样的查询输出?我试了很多东西,但都没用。如果有人能给我指出正确的方向那就太好了。。。

9o685dep

9o685dep1#

您可以按以下格式保存记录

ID CANDIDATE POINTS
1 C_4 5
2 C_2 4
3 C_1 3
4 C_5 2
5 C_3 1
6 C_5 5
7 C_3 4
8 C_2 3
9 C_4 2
10 C_1 1
11 C_4 5
12 C_1 4
13 C_3 3
14 C_5 2
15 C_2 1
16 C_1 5
17 C_4 4
18 C_2 3
19 C_3 2
20 C_5 1

这样,你就可以通过对他们的分数求和得到最高的分数。 SELECT sum(Points) from tablename

相关问题