MySQL:使用sum()为每个组获取N条记录

时间:2017-11-08 19:18:22

标签: mysql

我有下表包含来自不同组的项目:


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

非常感谢您的帮助!

0 个答案:

没有答案