2017-02-18 56 views
0

我有以下数据表,我想从中总结出每个'pid'字段'pts'的值如下: 每个'cont '加上每个'pid'的其他'cont'的值。结果应在DESC顺序由“总”基于MySQL中的总和值

+--------+-----+------+ 
| pid | pts | cont | 
+--------+-----+------+ 
| 121693 | 40 | 1 | 
| 121693 | 80 | 2 | 
| 121693 | 120 | 1 | 
| 121693 | 100 | 1 | 
| 121693 | 500 | 1 | 
| 121694 | 20 | 1 | 
| 121694 | 0 | 2 | 
| 121694 | 30 | 3 | 
| 121695 | 0 | 1 | 
| 121695 | 30 | 2 | 
| 121695 | 0 | 1 | 
+--------+-----+------+ 

在这个例子中提交的查询应该返回像这样

+--------+-------+ 
| pid | total | 
+--------+-------+ 
| 121693 | 800 | 
| 121694 | 50 | 
| 121695 | 30 | 
+--------+-------+ 

这可能吗? 在此先感谢。

+0

它应该是'121693 | 840' – RomanPerekhrest

+0

没有。这是正确的121693有800点,因为它从cont = 1中选择前3并加上80 WHERE cont = 2 – dimoss

回答

0

SELECT DISTINCT PID,SUM(PTS)为总 从你的表名 GROUP采用PID ORDER BY总

(需要测试和小语法小修正)

+0

谢谢,但由于它没有考虑到每个cont的前3个值,所以这并没有返回正确的结果。 – dimoss

+0

将SELECT DISTINCT更改为SELECT TOP 3并按DESC排序 – user7568042

+0

这又是不正确的,因为我不希望每个pid的前3个值,但是每个'pid'的每个'cont'的前3个值+其他值“续”。 – dimoss