首页 > 解决方案 > 计算来自不同列的 SQL 记录

问题描述

我正在开发一个投票/竞赛系统(PHP 和 SQL),用户需要在其中选择他们最喜欢的 5 个候选人。他们最喜欢的一号得到 5 分,他们最喜欢的二号得到 4 分,以此类推。

投票示例:

C = 候选人

C_3 5分
C_1 4 分
C_5 3分
C_2 2 分
C_4 1分

所有投票都将存储在 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. 候选人 4 - 16 分
2. 候选人 1 - 13 分
3. 候选人 2 - 11 分
4. 候选人 3+5 - 10 分

怎么可能得到像上面这样的查询输出?我尝试了多种东西,但没有任何效果。如果有人能指出我正确的方向,那就太好了......

标签: mysqlsqlcountcountingpoints

解决方案


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

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


推荐阅读