提取所有ID的总和大于另一个值的ID

时间:2018-08-30 09:47:21

标签: sql teradata

我有一个这样的输出表-

enter image description here

在这里,我想获取所有ID总数大于或等于40的ID,并按日期排序。我尝试使用有条件的方法,但是它不起作用。这就是我使用的-HAVING sum(a.amount)> = 40

该怎么办?

4 个答案:

答案 0 :(得分:0)

尝试使用子查询:

select tablename.* from tablename
inner join
(select id, sum(amount) from tablename
group by id
having sum(amount)>=40)a
tablename.id=a.id
order by appl_date 

答案 1 :(得分:0)

您似乎想要窗口功能:

select t.*
from (select t.*, sum(amount) over (partition by appl_date, valid_from) as totalamount
      from table t
     ) t
where totalamount >= 40;

答案 2 :(得分:0)

如果我假设“ id”表示application_id,并且您的表中有给定application_id的多行,那么您可以只使用聚合和having

您不清楚“按日期排序”是什么意思,但是您可以这样做:

select application_id, sum(amount)
from t
group by application_id
having sum(amount) >= 40
order by min(appl_date) asc;

答案 3 :(得分:0)

我认为您需要澄清一下应用程序ID是否唯一或它们是否可以重复重复。下面的查询将以任何一种方式工作,但是如果您不需要开销(如果值是唯一的),则可以使用更简单的方法。

我还假设这是一个sql server数据库。

seekBarValue / (200/60)