MySQL中基于ctiteria的求和值

MySQL中基于ctiteria的求和值,mysql,Mysql,我有以下数据表,我想从中总结每个“pid”的字段“pts”的值,如下所示: 每个“cont”的前3个值加上每个“pid”的任何其他“cont”值之和。结果应按描述顺序以“总计”表示 +--------+-----+------+ | pid | pts | cont | +--------+-----+------+ | 121693 | 40 | 1 | | 121693 | 80 | 2 | | 121693 | 120 | 1 | | 121693 | 100

我有以下数据表,我想从中总结每个“pid”的字段“pts”的值,如下所示: 每个“cont”的前3个值加上每个“pid”的任何其他“cont”值之和。结果应按描述顺序以“总计”表示

+--------+-----+------+
|  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 |
+--------+-------+
这可能吗? 提前感谢。

选择不同的pid,总和(Pts)作为总数 从你的桌名 按Pid分组 按总数排序


(需要对小语法进行测试和小修改)

谢谢,但这不会返回正确的结果,因为它没有考虑每个cont的前3个值。将“选择不同”更改为“选择前3个值并按desc排序”。这是不正确的,因为我不希望每个pid的前3个值,但希望每个“cont”的前3个值每“pid”加上其他“cont”的其余值。确定。我刚看到你编辑的帖子。我使用了一个聚合函数,因此SQLServer肯定已经为您完成了这项工作,而无需在查询中显示这一点。每一行记录都会相应地自动聚合。但是,你也可以额外编写代码。@Bakudan工作得很好,它可以为他提供所需的数据集。从提供的数据集中,我们都能看到的唯一一个问题是,右边的数字不正确。因此,我无法确定这是否是打字错误。应该是
121693 | 840
Nope。121693有800个点是正确的,因为它从cont=1加80中选择了前3个,其中cont=2