回答

收藏

如何在以下条件下找到Sum(field),即``从sum(field)<150的表中选择*

技术问答 技术问答 199 人阅读 | 0 人回复 | 2023-09-14

我只需要检索大小字段总和为
! j4 u& A+ w6 L' B: Guserid size
* _+ i: B7 G% u& n% N1       70
8 [, s1 u+ i3 |' t4 B' v" y. w2      100   
! I2 R( \# H- Q  c* n3       50
/ J" |$ {7 \& |9 e/ [8 z# V4       25
8 ^- R7 A- N4 O' T- l) h5      120
1 l- H% [2 |. K* H! M9 U6       90
0 B" g3 z7 Y! c6 B6 d# M' d1 |输出应为…
: Y* T. `0 h( i" H& f: Auserid size. c+ d0 X: E/ y) q% r0 _6 s+ k7 t
1       70
  J1 h# t1 `- {3       50
0 z4 ~) T% ~# M# [( B$ [( m4       256 Z; e" X: X2 r
例如,如果我们加上70,50,25,我们得到145,即! B9 m" Y0 t/ ]! o0 Z; Y
我将如何编写查询来完成此任务?. {4 @9 p% \6 h8 [
               
5 M! e+ Y2 v; y4 s  i0 U解决方案:
* W. h) f# F  Y0 e1 @+ L                6 T% _6 z4 B- S' q# w; A$ X
7 s5 Y( j3 Q  S+ K% x

$ ]4 ?3 }6 E( O3 t" S, H9 ~/ n                这是一个查询,将产生以上结果:
/ ^% _- J& u  q1 k. LSELECT * FROM `users` u
# B* C7 g0 J% G0 p8 d0 GWHERE (select sum(size) from `users` where size 但是,您描述的想要选择最适合给定大小的用户的问题是装箱问题。这是一个NP-% ?" o3 u+ J$ a2 u
Hard问题,用ANSI% ?; B/ ~/ z" N  q: p/ {& @. \
SQL很难解决。但是,以上内容似乎返回了正确的结果,但实际上,它只是从最小的项目开始,然后继续添加项目,直到垃圾箱已满。1 q4 q# b; X; |" ^: S+ J
通用,更有效的装箱算法将是从最大的物品开始,并在适合时继续添加较小的物品。该算法将选择用户5和4。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则