如果从一个表A中抽取n条数据,要让n条数据中FIELD0012这个字段之和无限接近传入的参数Needmoney,返回结果集n条数据的id.
样例数据如下:
如果输入参数Needmoney是1500000条,返回最合适的n条数据的ID,目标数据库是Oracle,请各位集思广益,共同提高?
 INTO ""."" ("ID", "FIELD0012") VALUES ('7542376801649573989', '5000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('792095545251480041', '1200000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-2799663732232009732', '1800000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-449194716311762442', '1500000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('3533576885435844060', '5600000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('8707956464688320387', '3000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-620822516575089278', '3000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-6080894920566947104', '3000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('6131225749207402270', '6024000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-5085860620889078035', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-2104824443380284344', '3000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('5840880044205818786', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-8581203654882213411', '1238838.52');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('3216031198374022991', '5000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('3528057672845771572', '1100000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('3120141390712030982', '1300000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-1337800312943588204', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-1355797397165751504', '2300000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('6960648997476188872', '2700000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('3071244672871449914', '1242091.59');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-993240273935905496', '3891419.20');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('2727685077045757166', '2312857.55');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-6348573605343834500', '31930697.46');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('1390937958039833346', '1400000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-2396230476064141434', '3720000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-5476939412138409703', '1130000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('6194586432220579777', '1800000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-1120145901341291854', '6083077.15');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-5721616447059573204', '1500000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-953087760185603307', '2600000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-5439862695511111741', '8011444.99');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-8751456220923147723', '2500000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('8158231624255096309', '3000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('4579370252973067206', '2500000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('6762083006682516289', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('1118268023764175594', '3000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('1014712553161116909', '3500000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-217762634095050090', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('5153859667171822269', '2130000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('591217050601996458', '1400000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('9033504512052380304', '4000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-6018321344333987175', '1302410');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-8018128991563919623', '1600000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('607962477845892893', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('7590182249313095618', '4700000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-5394345230388541734', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-491674065428069854', '1528590');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-284580741776915616', '10200000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('1436670486868806655', '4000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-2931545342578702003', '1800000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('1051547950735183172', '3000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-661087578544192340', '3000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-6573862570419403731', '1570000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('6035721865043136315', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-1691892348235461558', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('1076375769943066401', '4000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-8419557841596560039', '5000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-7035702197097905080', '1030000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-6409884159929529084', '2600000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('4051406510848296550', '3000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-2150640211959132497', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('2803917967932869387', '7258586.84');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-2817128296738503401', '3430000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('2216485444515482012', '10000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('3591381700484353860', '1042525.32');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('5463872902374114668', '1600000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-4485521706605850946', '1300000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('1694918386400969834', '1358368');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-8968079724683115461', '8000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-982048866967796455', '2488975.29');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('7310683544661151633', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('4744120853074167654', '1400000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('2134458335904219988', '1500000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-1111343055900815491', '2600000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-6967066455525995005', '1900000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('560998513580393128', '2740018.22');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('7140522706633181435', '1500000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('5513357930501328212', '1700000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('5320786183424135136', '4450000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('6866879789430688043', '1550016');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('2306117223530449853', '3000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-5624112565102426255', '1500000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('4291225247768592446', '1500000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-520111713847981204', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('2309296893420062974', '5000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('1995288118020751876', '8000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-3764906646744185026', '1200000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-1812077472112492426', '4900000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('3520021723629571854', '1359398.41');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('8845922465217661529', '2696148');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('2786557034795454071', '1300000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('2172170171995668667', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-7703510866663880743', '1200000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('3257083287835787416', '2370000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-3037914648756993116', '3000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('1186245741487540501', '3000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-2995038129833751506', '5000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('1278097253980654393', '1200000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('8314049178738050407', '5000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-5228904754379208861', '1700000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('722442458457720147', '3350000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-2245053027713594314', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-5688146207274416033', '8920000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-9195492285649894073', '1500000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-2849923063556126587', '1520000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-8703818674250497942', '4900000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('3287924674665990942', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('3290043329616954100', '1683078.08');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-4761370205993090337', '2300000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('6978376789901460260', '2837493');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('3319850160904228237', '3000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-9031493766930019453', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-896424660346254359', '5200000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('275616691725682097', '5000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-3095678015150535930', '2000000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('6032456457589768504', '1400000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('2110397234853069333', '1200000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-3716806173050321326', '1300000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('-2415231205191630557', '1500000');
INSERT INTO ""."" ("ID", "FIELD0012") VALUES ('125863414842868434', '1524263.46');

解决方案 »

  1.   

    感谢你的回复,是取最下差值,但是最小差值如何取呢?取几个数,n是不确定哦
    查询sql >新增差值列>按照差值列顺序排序 > 第一行的id 就是最小差值 或者用min()函数;至于取几个数, 差值等于最小差值的都取了
      

  2.   

    整理下的话一条sql基本够了
      

  3.   

    前面也尝试过SQL,如果数据稍微多点的话,效率跟不上,直接卡死!
      

  4.   

    https://bbs.csdn.net/topics/392743447,这里有通过数据库来解决的方法案例!