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

获取SQL表列的总和,直到总和达到5000

寇开畅
2023-03-14
问题内容

我工作的一个SQL查询的表有两列Amount,并Date应返回的总和Amount列的值,直到达到5000它也应该返回的值Date列在该Sum(Amount)河段5000的排序条件为Date

例如,我的数据如下 SQL TABLE

   ID Amount  Date
    1 1000    5/5/2014
    2 1000    5/1/2014
    3 900     5/3/2014
    4 1500    5/4/2014
    5 2000    5/4/2014 
    6 2500    5/5/2014

在上表中,金额总计应在按日期排序之后进行计算,并且一旦金额达到5000分,应返回金额及其关联的日期的总计。

排序数据后,它变成如下所示

   ID Amount  Date    
    2 1000    5/1/2014
    3 900     5/3/2014
    4 1500    5/4/2014
    5 2000    5/4/2014 
    1 1000    5/5/2014
    6 2500    5/5/2014

查询应返回以下结果

TotalAmount  Date
5400         5/4/2014

上述结果是因为总和达到5000ID=5 Amount=200 and Date=5/4/2014

我可以知道一种更好的方法来处理它吗 SQL Server


问题答案:

对于SQL Server,您可以使用SUM() OVER()并获得总和> = 5000的第一行;

WITH cte AS (
  SELECT id, date, SUM(amount) OVER (ORDER BY date,id) totalamount 
  FROM mytable
)
SELECT TOP 1 totalamount, date 
FROM cte 
WHERE totalamount >= 5000 
ORDER BY date, id;

要使用进行测试的SQLfiddle。



 类似资料:
  • 问题内容: 我正在使用SQLite,并尝试返回该列中某一列的总数,同时返回所有数据。我不想/不需要对数据进行分组,因为我需要在每个返回的行中都包含数据。 当我包含类似内容时, 它仅返回一行。我需要所有返回的行以及所有条目的总数。 问题答案: 听起来这就是您要寻找的内容: 参见带有演示的SQL Fiddle

  • 问题内容: 如何查询和显示记录直到达到一定数量? 假设您要选择学生,直到学生的总金额达到1000? 加成 如果我想停在500,我会得到记录1和2(190 + 290)。如果我想停在1000,我会得到记录1直到4。 问题答案: SQL表没有“内部”顺序,因此您必须指定一些ORDER BY子句以赋予“直到”短语任何含义。鉴于此,可以使用来自学生ORDER BY xxx LIMIT N的SELECT S

  • 问题内容: 让 假设我要对列表中每个列表的索引元素求和,例如在矩阵列中添加数字以获得单个列表。我假设数据中的所有列表的长度均相等。 如何遍历列表列表而不会出现索引超出范围错误?也许lambda?谢谢! 问题答案: 您可以尝试以下方法: 这里使用的组合和解压的列表,然后根据自己的索引压缩的项目。然后,您可以使用列表推导来遍历相似索引的组,对其进行求和并返回其“原始”位置。 为了更清楚一点,下面是迭代

  • 问题内容: 我想在表格中添加一列并返回总和。我有一个循环,但是没有用。 问题答案: 您可以在MySQL查询中完全处理它: 在PHP代码中,尝试以下操作: 使用PDO(已弃用)

  • 问题内容: 我想从2个不同的表中获得几列的总和(这些表具有相同的结构)。 如果我只考虑一个表,我会写这种查询: 但是,我也想使用表T_BAR中的数据,然后使用查询返回以下列: MONTH_REF SUM(T_FOO.amount1)+ SUM(T_BAR.amount1) SUM(T_FOO.amount2)+ SUM(T_BAR.amount2) 一切都按的值分组。 请注意,给定记录可以在一个表

  • 问题内容: 我已经寻找了一段时间,但找不到该问题的答案(也许我没有搜索正确的术语或其他内容)。基本上,我有一个数据库,每个日期有任意数量的条目。我需要获取包含条目的最近X天的总和(忽略没有条目的天)。我知道如何找到每一天的总和。 假设我有一个名为“ Yield”的表格: 然后,我使用以下查询: 要获取每天的通过/测量的总数,请执行以下操作: 然后,我需要一个查询,该查询可以调用一个日期(例如我称它