sql从3个值的计算中得到最小值

inb24sb2  于 2021-07-29  发布在  Java
关注(0)|答案(3)|浏览(519)

我有多行,每行有3列,我想做的是计算这3列在每一行,看看哪一行有最低的总和
例如:

row 1 - col1(1)+col2(3)+col3(0) = 4
row 2 - col1(50) + col2(3) + col3(4) = 57
row 3 - col1(2) + col2(0) + col3(0) = 2

所选行(第3行)将显示计算值=2
目前我只计算了1列,但现在我需要3列
我就是这么做的:

select min(Bonus) from dbo.Bonuses AS c1

我的table(奖金)

ID      Bonus    Double Bonus   Master Bonus
1         1          3              0
2         50         3              4
3         2          0              0

预期结果:
第3行是将打印的最小值

2
kninwzqo

kninwzqo1#

您可以使用:

select min(col1 + col2 + col3) from table;
``` `col1 + col2 + col3` -计算表中每行(行)的和; `min(col1 + col2 + col3)` -确定最小值。就你而言:

select min("Bonus" + "Double Bonus" + "Master Bonus") from "Bonuses";

siv3szwd

siv3szwd2#

对于每一行,应首先获得列之间的最小值,然后从结果列中获得最小值:

select min(least(col1, col2, col3)) from yourTable;
xxhby3vn

xxhby3vn3#

以防万一,你应该知道 NULL 值可能会产生意外结果。更安全的计算方法是:

select min(coalesce(col1, 0) + coalesce(col2, 0) + coalesce(col3, 0))

与…有关的问题 NULL 价值观是 + 退货 NULL 如果有任何值 NULL . 这意味着该行中的所有值都将被忽略。
问题中的样本数据没有 NULL 价值观。但它也没有明确规定这些值永远都不是 NULL 所以我认为这一点很重要。

相关问题