当前位置: 首页 > 面试题库 >

将值减去多行

唐茂实
2023-03-14
问题内容

好吧,我陷入了需要在多个行之间分配值的问题。由于我不知道具体术语,因此我将以下面的示例形式进行介绍,以便更好地理解:

假设x的值为20,我需要按降序将其分配/减去到行中。

桌子:

ID        Value1 
1          6             
2          5
3          4
4          3
5          9

结果应类似于:(x = 20)

ID        Value1     Answer
1          6           14    
2          5           9
3          4           5
4          3           2
5          9           0

谁能给我一个主意,我该怎么做?


问题答案:

以不同的方式考虑这个问题也许更容易。您要计算的总和,value1然后从中减去该值@X。如果差异为负,则输入0

如果您使用的是SQL Server 2012,则您具有内置的累计总和。您可以这样做:

select id, value1,
       (case when @X - cumvalue1 < 0 then 0 else @X - cumvalue1 end) as answer
from (select id, value1,
             sum(value1) over (order by id) as cumvalue1
      from table t
     ) t;

如果您没有累积总和,则可以使用子查询来代替:

select id, value1,
       (case when @X - cumvalue1 < 0 then 0 else @X - cumvalue1 end) as answer
from (select id, value1,
             (select sum(value1)
              from table t2
              where t2.id <= t.id
             ) as cumvalue1
      from table t
     ) t;


 类似资料:
  • 问题内容: 我在两个不同的表中有价格,想将它们相减(当前价格-当天价格)并以DESC形式订购它们。我想知道是否可以使用单个MySQL命令来完成。 表结构 问题答案: 除了我使用LEFT JOIN的方式外,此查询没有什么特别的。我相信,如果无法提供昨天的记录价格,则最后三列将包含NULL。输出:

  • 问题内容: 我正在尝试提出一个将更新的MySQL查询…我可以做这样的事情吗? 问题答案: 通过将单引号放在“点-5”周围,可以将该表达式转换为纯文本字符串。不用引号就可以使MySQL看到您正在引用一个字段(点),并从其当前值中减去5。

  • 我有一个流入数据库,里面充满了值。这些值由Grafana提供。我需要的是根据选定的时间间隔获取实际值。 目前,我对单个指标有以下查询: 我想要的是从这个区间中减去最小的值,所以它只计算这个区间内的值。因此,图表需要从零开始。要从该间隔中获取最低值,我使用: 所以我认为像这样结合这两个(和子查询)应该可以: 不幸的是,这不起作用。该查询不被接受为子查询。

  • 我试着让用户输入一个数字,然后再输入一个数字,告诉程序要做多少次基本的数学运算。我得到了工作的加法和乘法,但我不确定如何得到减法,以减去一个数字本身由用户选择的次数。

  • 问题内容: 我有两个对象: 我怎么能在几分钟内发现它们之间的不同? 问题答案: 使用或,如api所述 0 0

  • 问题内容: 我正在从SQL数据库中提取日期,该日期将其视为从午夜开始的日期。当我开始使用它们时,它会正确格式化它们,但是不会浪费一天。 格式化之前: 格式化后: 代码: 问题答案: 如果您分段运行代码,则会注意到产生的输出类似(我的计算机现在处于EDT中)。 这是因为(doc): 假定时区的差异 给定日期字符串为“ 2014年3月7日”,parse()假定为本地时区,但是给定ISO格式(如“ 20