如何查询数据库中capacity列数值组合和≥指定值的记录
解决方案:查询可组成总和≥指定值的记录
核心逻辑:只要某条记录所属的foreign_id分组的总capacity≥指定查询值,这条记录就符合要求。因为该分组的所有记录总和必然达标,这条记录自然属于这个符合条件的子集;而如果分组总容量都达不到指定值,那么任何子集的总和也不可能达标,无需返回。
对应的SQL查询如下:
WITH group_totals AS ( SELECT foreign_id, SUM(capacity) AS total_capacity FROM tableName GROUP BY foreign_id ) SELECT t.* FROM tableName t JOIN group_totals gt ON t.foreign_id = gt.foreign_id WHERE gt.total_capacity >= :target_value;
代码说明
group_totals是临时结果集,用来计算每个foreign_id分组的总容量;- 将原表与临时结果集关联,筛选出总容量≥指定值(
:target_value)的分组下的所有记录; - 把
:target_value替换为实际需要的数值即可,比如5或9。
验证示例
- 当指定值为5时:
foreign_id=3的总容量为12≥5,因此返回d、e、f三条记录,符合需求; - 当指定值为9时:
foreign_id=3的总容量12≥9,同样返回这三条记录,因为6+4+2=12≥9,每条记录都属于这个达标子集。
内容的提问来源于stack exchange,提问作者marcin2137
相关产品推荐
相关产品推荐

