我在表格中有30個記錄,其中有「箱號」和「重量」欄。 我必須在30個箱子中找到20個箱子,其總重量最接近1000千克。用於查找總重量的SQL查詢
3
A
回答
2
SQL服務器:
select TOP 20 box_number
from t_boxes
group by box_number
order by ABS(SUM(box_weight) - 1000) ASC
編輯: 在情況下,我誤解你的問題,你真的想解決揹包問題。 這是你真的應該在SQL中做的事情,但你可以閱讀this文章,用非常合適的名稱:現在完全不適合使用SQL Server。
5
我建議你閱讀有關Knapsack problem
0
你會解決這個問題的SQL不推薦的方式,甚至可能沒有任何一臺機器上是可行的。但是,你可以表達蠻力解決方案:
select box1.id, box2.id, . . . ,
(box1.weight + box2.weight + . . .)
from box box1 join
box box2
on box2.id > box1.id join
box box3
on box3.id > box2.id join
box box4
on box4.id > box3.id
. . .
box box20
on box20.id > box19.id
order by abs(1000 - (box1.weight + box2.weight + . . .))
「ON」的條件保證你正在尋找在各組的箱子一次,通過其獨特的ID進行排序。使用「連接」而不是「左連接」可以確保最終有20個盒子。
相關問題
- 1. 用於查找彙總值的Oracle sql子查詢
- 2. 總查詢的SQL查詢
- 3. 用於查找重複並獲取其他值的SQL查詢
- 4. SQL查詢 - 查找重複的字段
- 5. 從SQL查詢重複SQL總和?
- 6. 用於統計總時間量的SQL查詢
- 7. 用於查找4個連續值的總和的SQL Server查詢
- 8. SQL查詢查找重複項
- 9. SQL查詢/查找基於排名
- 10. 總SQL Server查詢
- 11. SQL彙總查詢
- 12. 彙總SQL查詢?
- 13. 總和 - SQL查詢
- 14. sql查詢找到總百分比
- 15. SQL查詢找到如下總
- 16. SQL Select總和查詢變量
- 17. SQL查詢彙總多個查詢
- 18. SQL Server查詢查找重複記錄加入查詢
- 19. 用於查找公用數據的SQL查詢
- 20. 用於查找和替換的SQL查詢不起作用
- 21. 用於查找超集作用的SQL查詢
- 22. 查找值組成的彙總查詢
- 23. 用於查找表的主鍵的SQL查詢?
- 24. 用於查找與大多數朋友的人的SQL查詢?
- 25. 查找變量的總和
- 26. SQL查詢來查找列
- 27. SQL查詢來查找月
- 28. 查找SQL查詢瓶頸
- 29. 用於查找過期產品數量和類別產品總數的SQL查詢
- 30. Sql用於查找銷售趨勢的查詢
你使用什麼sql引擎? BTW搜索'揹包問題SQL'的一些提示,因爲它不會是微不足道的:) – biziclop 2012-07-27 10:05:00
即時通訊使用SQL服務器 – 2012-07-27 10:08:33
爲什麼你需要使用SQL?編程語言更適合於這樣的問題。您的問題缺少[示例代碼](http://sscce.org/)(這裏是SQL語句)。請爲[samples]使用CREATE TABLE和INSERT ... VALUES(http://weblogs.sqlteam.com/jeffs/archive/2008/05/13/question-needed-not-answer.aspx)。所需的結果不需要作爲示例代碼呈現,因爲結果是代碼的輸出,而不是代碼本身。 – outis 2012-07-27 10:09:39