【发布时间】:2014-11-22 22:34:39
【问题描述】:
我得到以下数据库表:
combination_id | weight | group | std
-------------------------------------------------
1 | 50 | 3 | 7
2 | 30 | 3 | 19
3 | 30 | 3 | 19
4 | 25 | 4 | 7
我按 group 和 std 列对条目进行分组,并总结 weight 列的值:
SELECT SUM(weight) as weight_sum, group, std FROM weight_table
WHERE combination_id IN (1, 2, 3)
GROUP BY group, std
ORDER BY weight_sum DESC;
结果如下:
weight | group | std
-----------------------------------------------
60 | 3 | 19
50 | 3 | 7
25 | 4 | 7
现在我想做第二个 GROUP BY,但只在 group 列上,并在 weight 列上求和。结果中std列的值应该是上次查询中权重最高且同组的条目的std列的值。 所以对于 3 组,我希望为 std 选择 19,因为 60 是最高的 3 组的权重:
weight | group | std
-----------------------------------------------
110 | 3 | 19
25 | 4 | 7
我怎样才能做到这一点? 我正在使用 sqlite 3。
【问题讨论】:
标签: sql sqlite greatest-n-per-group