回答

收藏

如何选择总计不超过60%的值

技术问答 技术问答 219 人阅读 | 0 人回复 | 2023-09-13

假设我有一个这样的表:
2 J" F  v# U6 \" ~AB 31 R# W# I) E; @
CD 1: \1 X) Q. M* ~# B3 W- q
EF 2
' h- x4 X4 O* A% SGH 4  
8 _2 f) I# K* `1 b最后一列的总和为10,我希望最大的总和至少为总价值的60%。因此,在这种情况下,它将返回; {" J( _3 [) c
GH 4+ q+ ?5 D1 t! t5 B- f- E- ^! L
AB 3  
8 B; G( o+ H6 b1 D, G8 o: g, w最高上升到70%,但如果仅选择第一个值,则最高上升到40%。即使可能会有组合返回正好60%的组合,我们也要取最大的数字。
& [5 B. ]/ A: w) B* o2 {2 q因此,我想我知道如何从最大到最小对值进行排序,以及如何对所有值求和,但是我不知道如何只取总和为60%的行。7 W5 E" j* G/ s& Z% ^
               
, j& b! n0 t  u, O0 M% W解决方案:
4 _9 P" z8 J0 G+ o4 |  T0 N, F               
! T% v4 H3 ?7 @' \% b0 U
& ?, B" Q  Q) n+ j9 B, a
' l: W4 G. q3 [! b                –save the whole sum into a variable
+ t% M' M# i( J9 F    summa = select sum(val) from sometable;2 L/ {2 W; V6 p0 y  F
select *
; _3 b- z8 H/ i# Y  o  from sometable o 5 }" W. m8 T4 e
where (6 a  P" s/ X& B: i7 p% X$ l
        select sum(val)   p- c% m& D1 g# v
          from sometable i
% W, j! \3 m1 ~/ c: Q) [9 Z         where i.val = 0.6*summa;
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则