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

从另一个表中的特定点开始的SQL中的SUM值

齐冥夜
2023-03-14
问题内容

我有一张列出html" target="_blank">索引/顺序,名称和值的表。例如,它看起来像这样:

TABLE1:
ID | NAME | VALUE
1  | A    | 2
2  | B    | 5
3  | C    | 2
4  | D    | 7
5  | E    | 0

现在,我还有另一个表,其中包含一个随机的NAME列表。它只会显示A,B,C,D或E。根据名称是什么,我想计算到达E所需的所有值的总和。这有意义吗?

因此,举例来说,我的表格如下所示:

TABLE2:
NAME
D
B
A

我想在NAME旁边的另一列显示总和。所以D将有7,因为下一个事件是E。B将必须是5、2和7的总和,因为B是5,C是2,而D是7。而A将有2的总和。
5、3和7,依此类推。

希望这很容易理解。

实际上,除了连接两个表并获取NAME的当前值外,我没有什么其他的。但是我不确定如何增加等等,然后继续增加?

SELECT T2.NAME, T1.VALUE
FROM Table1 T1
LEFT JOIN Table2 T2 ON T1.NAME = T2.NAME

这样做有可能吗?还是我在浪费时间?我应该参考实际的代码来做到这一点吗?还是我应该做一个功能?

我不确定从哪里开始,我希望有人可以帮助我。

先感谢您!


问题答案:

正如gregory建议的那样,您可以使用一个简单的窗口函数来执行此操作,该函数(在这种情况下)将基于该ID值汇总当前行之后(包括当前行)的所有行。显然,您可以采用多种不同的方式对数据进行切片,尽管我将让您自己探索:)

declare @t table(ID int,Name nvarchar(50),Val int);
insert into @t values(1,'A',2),(2,'B',5),(3,'C',2),(4,'D',7),(5,'E',0);

select ID      -- The desc makes the preceding work the right way. This is 
        ,Name  -- essentially shorthand for "sum(Val) over (order by ID rows between current row and unbounded following)"
        ,Val   -- which is functionally the same, but a lot more typing...
        ,sum(Val) over (order by ID desc rows unbounded preceding) as s 
from @t
order by ID;

将输出:

+----+------+-----+----+
| ID | Name | Val | s  |
+----+------+-----+----+
|  1 | A    |   2 | 16 |
|  2 | B    |   5 | 14 |
|  3 | C    |   2 |  9 |
|  4 | D    |   7 |  7 |
|  5 | E    |   0 |  0 |
+----+------+-----+----+


 类似资料:
  • 问题内容: 我在尝试从不在另一个表中的表中选择特定条目时在MySQL中遇到问题。我知道这句话听起来很疯狂,但这是我要尝试的一个例子。 表用户: 表文章: 表格视图(如果用户查看了特定的文章,则用于存储数据): 现在,我试图选择那些尚未阅读特定文章的用户,例如ID为10的文章。因此,他们在views表中没有条目。 我希望现在更有意义。感谢您的回答。V. 问题答案:

  • 我想创建一个动态表,从静态表中提取第5列,并将其乘以一个值字段。 1.静态表 2.动态表 在excel中,我只需要对它旁边的单元格进行计时。但是我希望sql在每次上传新的静态文件时创建/更新数据库。 ok更新 查看后,我需要一些不同的东西,我需要采取两个表,并将它们相互累加一个表将是和其他在 帐户;渠道;[产品代码](这是我的P.key);1月;2月;标记;APR;五月;君;七月;8月;9月;OC

  • 我有两个表:包含5列(col1、col2、col3、col4、val1)的表1和包含5列(col1、col2、col3、col4、val2)的表2。1.表1.val1不包含任何值。2.对于表1和表2来说,col1、col2、col3和col4是相同的,它们是主键。 我想做的是,当table1.col1=table2.col1和table1.col2=table2.col2和table1.col3=

  • 问题内容: 在MySQL中: 如果我们有两个表: 和: 我想从意见表中具有相应的具有特定表(该列表)。 例如,我想选择所有从该行有一个表中的表: 我希望这些结果: 而如果我选择所有从该行表中有一个的在表: 我希望得到这样的结果: 我真的希望有人能提供帮助,谢谢大家! 我想我需要参加吗?任何指针都将是很好的,并且如果可能的话,可以做一个简短的解释,以便我可以找出我要去的地方->这样我下次就知道了!

  • 问题内容: 我有以下两个SQL表(在MySQL中): 如何找出哪些电话是由人,他们提出是不是在?所需的输出将是: 任何帮助将非常感激。 问题答案: 有几种不同的方法可以执行此操作,效率各不相同,具体取决于查询优化器的性能以及两个表的相对大小: 这是最简短的陈述,如果您的电话簿很短,则可能是最快的陈述: 或者(由于Alterlife) 或(感谢WOPR) (如其他人所说,忽略它通常最好只选择想要的列

  • 问题内容: 我需要根据从以下两个表中提取的数据创建一个新表: 第一表: 第二张表: 新表应包含一个“ Var”列和一个“Number”列,其中每个变量将包含一行带有cur_number的行,其余各行将包含第二个表的new_number列中的数字,其中。例如,在上面显示的示例中,对于A,将有一行,行数为10(其cur_number),另一行为“ 2”(因为2 <10,但是11>10)。 在我的示例中