我有下表包含来自不同组的项目:
Item GroupName Price
A G1 10
B G1 3
C G1 8
D G2 6
E G2 12
F G2 8
G G3 3
H G3 8
H G3 5
我想从每个组中选择一个项目(任何),其中总和小于X并返回N个可能的组合。 例如。 sum(项目G1,项目G2,项目G3)< = 21;来自每个组的2个项目(N),输出可以是:
Items Sum A, D, J 21 C, F, G 19
我找到了从每个组中选择N条记录的解决方案:
SELECT Item,Price FROM(SELECT Item,Price,@rank:= IF(@prev_group = GroupName,@ range + 1,1)AS rank,@ prev_group:= GroupName FROM TABLE_NAME JOIN(SELECT @prev_group:= NULL ,@rank:= 0)AS TV BY ORDER BY GroupName,Price DESC)为T2 WHERE rank< = 2
但必须知道如何添加
其中SUM(价格)< = 21
非常感谢您的帮助!