提问人:DilTeam 提问时间:1/10/2023 更新时间:1/10/2023 访问量:70
SQL查找金额何时首次达到某个值
SQL to find when amount reached a certain value for the first time
问:
我有一个有 3 列的表:.我需要找出金额首次达到 100 万的日期。在任何一天,金额都可以上升或下降。user_id, date, amount
我尝试使用,但我不知道如何找到它第一次达到 100 万的确切日期。我正在探索功能。任何指点将不胜感激。partition by user_id order by date desc
lead, lag
答:
1赞
ahmed
1/10/2023
#1
您可以使用条件聚合,如下所示:
select user_id,
min(case when amount >= 1000000 then date end) as expected_date
from table_name
group by user_id
如果您想检查金额正好达到 1M 的位置,请使用case when amount = 1000000 ...
如果表示金额是日期递增的累计金额,则查询将为:
select user_id,
min(case when cumulative_amount >= 1000000 then date end) as expected_date
from
(
select *,
sum(amount) over (partition by user_id order by date) cumulative_amount
from table_name
) T
group by user_id;
评论
1赞
DilTeam
1/12/2023
谢谢。第一个 SQL 满足了我的需求。
0赞
Raging Bull
1/10/2023
#2
试试这个:
select date,
sum(amount) as totalamount
from tablename
group by date
having totalamount>=1000000
order by date asc
limit 1
这将汇总每天的金额,并返回 1 条首次达到 1M 的记录。
SQL Fiddle 上的示例结果。
如果您希望按日期和user_id对其进行分组,请在 select 和 group by 子句中添加user_id。
select user_id, date,
sum(amount) as totalamount
from tablename
group by user_id,date
having totalamount>=1000000
order by date asc
limit 1
评论