回答

收藏

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

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

假设我有一个这样的表:: _9 k: D, ]* |& J: v3 V3 a' f: f* Y
AB 3
, `. v+ J. j2 O  B* W) o' L7 R7 f. K" eCD 1
, S# L: |" }7 `) q, |3 `EF 2
5 c" c' ]( b' Y! v2 U! F2 X7 VGH 4  
7 a3 x5 Y' z0 o5 d; ~最后一列的总和为10,我希望最大的总和至少为总价值的60%。因此,在这种情况下,它将返回8 m. `# i  j& P" B! {* [+ ^, D
GH 4  w& R6 l8 ^$ \& _4 _& B
AB 3  
3 B! y2 c: I. r/ M* _最高上升到70%,但如果仅选择第一个值,则最高上升到40%。即使可能会有组合返回正好60%的组合,我们也要取最大的数字。% ^% V- c+ w9 R' q, m9 Z" Q+ s+ {% _
因此,我想我知道如何从最大到最小对值进行排序,以及如何对所有值求和,但是我不知道如何只取总和为60%的行。
9 |/ P' |; ~& @! t* h1 L                " m; L2 N& M$ m# M: \
解决方案:
3 R  q: @4 y# l. H  i: _2 e7 f               
5 m8 c% |$ n& N( X& e3 \% g: j' _4 |, H. l: Z& e. D" E
1 D/ v+ U+ W- C7 l- |
                –save the whole sum into a variable( D7 [+ X) }3 i7 n2 V2 W
    summa = select sum(val) from sometable;
; p% Z2 l8 c8 e" qselect * * J" E$ {8 ^1 L
  from sometable o
0 [0 a+ [0 f; h0 C where (% U' F: ]' _. U, Q8 s
        select sum(val) 6 m! u' \* z. K8 _
          from sometable i 6 E# z2 T! J/ i- s* H' X
         where i.val = 0.6*summa;
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则