gpt4 book ai didi

mysql 在给定其他值的约束条件下选择总和最大的记录

转载 作者:行者123 更新时间:2023-11-29 03:33:44 26 4
gpt4 key购买 nike

我环顾四周,但也许我没有使用正确的术语。

我有一个包含 4 列的表,我想在其中找到根据对其他列的约束“优化”一列总和的记录子集。我基本上想通过 MySQL 模仿 Excel 的“求解器”加载项。

例如,在下表中,我想选择 6 个总和为最大“值(value)”的品牌,而 (1) 的总“价格”<= 600,(2) 最多有 2 个任何特定的“类型”值(例如,A 的 B、C、D 和 E 的总和 <= 每个 <= 2)。

我试过使用运行计数,但这并没有让我走得太远。非常感谢任何指导。

品牌 |类型 |价格 |值(value) |
克莱斯勒 |一个 | 93 | 46.8 |
福特 | D | 98 | 46.3 |
奥兹莫比尔 |丙 | 92 | 45.6 |
土星 | D | 89 | 45.6 |
普利茅斯 |一个| 104 | 45.3 |
丰田 |乙 | 90 | 42.6 |
本田 |丙 | 89 | 39.8 |
斯巴鲁 |丙 | 90 | 38.9 |
吉普车 |丙 | 70 | 37.8 |
别克|乙 | 73 | 36.4 |
凯迪拉克 |一个| 83 | 35.4 |
尼桑 |一个 | 77 | 34.6 |
樱桃 |乙 | 71 | 34.6 |
菲亚特 |乙 | 75 | 33.5 |
梅赛德斯 |乙 | 79 | 33.3 |
雷克萨斯 |一个 | 81 | 31.9 |
宝马 |乙 | 71 | 30.2 |
沃尔沃 |乙 | 72 | 29.3 |
标致 |乙 | 58 | 29.1 |
起亚 |丙 | 59 | 28.2 |
奥迪 |乙 | 59 | 27.9 |
大众汽车 |乙 | 63 | 26.9 |
三菱 |丙 | 61 | 26.6 |
雪佛兰 |一个| 71 | 25.3 |
讴歌 |乙 | 57 | 24.5 |

最佳答案

这是一种使用表的六向自连接一次比较六行的所有组合的方法 (!!)。这将找到总价格小于 600 的最高值组合。(请注意,价格小于 600 的约束在您的数据集中根本不是约束,因为没有超过 100 的单个价格)。 http://sqlfiddle.com/#!2/33fba/15/0

对不起,我不明白你想用 As、Bs、Cs 等做什么。

SELECT SUM(a.price+b.price+c.price+d.price+e.price+f.price) AS price,  
SUM(a.value+b.value+c.value+d.value+e.value+f.value) AS value,
a.brand AS a, b.brand AS b, c.brand AS c,
d.brand AS d, e.brand AS e, f.brand AS f
FROM t AS a
JOIN t AS b ON a.Brand < b.Brand
JOIN t AS c ON b.Brand < c.Brand
JOIN t AS d ON c.Brand < d.Brand
JOIN t AS e ON d.Brand < e.Brand
JOIN t AS f ON e.Brand < f.Brand
GROUP BY a.brand, b.brand, c.brand, d.brand, e.brand, f.brand
HAVING SUM(a.price+b.price+c.price+d.price+e.price+f.price) <= 600
ORDER BY SUM(a.value+b.value+c.value+d.value+e.value+f.value) DESC
LIMIT 10

关于mysql 在给定其他值的约束条件下选择总和最大的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26705519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com