回答

收藏

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

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

假设我有一个这样的表:
( a+ M) m- k) Q' Q- H; HAB 3( i; F2 t& b- K' j3 {. |# g
CD 14 w6 V- l) y( Y' D) t# P
EF 2# |4 ^  V; e: K: q$ I; p
GH 4  
, p" G6 f' _. o最后一列的总和为10,我希望最大的总和至少为总价值的60%。因此,在这种情况下,它将返回/ R2 v( F% H, A  f
GH 4
" o3 v. U2 v% ~* DAB 3  8 s  u! H! a0 S0 C5 C" q  [
最高上升到70%,但如果仅选择第一个值,则最高上升到40%。即使可能会有组合返回正好60%的组合,我们也要取最大的数字。- F( M& V' `; A/ n
因此,我想我知道如何从最大到最小对值进行排序,以及如何对所有值求和,但是我不知道如何只取总和为60%的行。
" [4 j! j3 D* C4 q* h8 V  b, R               
) g$ [2 P! A. D7 U; U解决方案:
$ ^$ l9 g  c2 v                2 ]9 k9 I& M( ?1 `
; C4 K; [" t, ?/ V5 i
! b' u; q% Y$ D2 ]3 m2 u
                –save the whole sum into a variable: v4 V3 u5 P2 B: e" ]) [
    summa = select sum(val) from sometable;
) _0 j# }9 S; n/ ^select * , |# G: F: h, ~1 A
  from sometable o
% Y* [7 m0 S& o  ^6 B# @3 G where (. x& b0 Y5 x4 q7 M1 t) m" Z& Q
        select sum(val)
1 i) L) K4 ]; H; W) p          from sometable i * a: O8 V6 Q* n6 F
         where i.val = 0.6*summa;
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则