如何使用 MySQL 中的先前值来计算下一个值?我用我蹩脚的英语无法更清楚地解释我的意思(任何人都可以通过看到这篇文章的标题来理解我的问题吗?),所以让我用一个片段来解释它:
select
year_id,
sum(case when event_cd >= 20 then 1 else 0 end) as h,
sum(case when ab_fl = "T" then 1 else 0 end) as ab,
h/ab as ba
from events
group by year_id
在上面的代码段中,当您运行查询时,您会收到错误消息,因为events
表中没有h
or等列ab
。但是,我想使用h
和ab
在前面的sum(case when ~)
语法中计算。我记得有一些方法可以使它成为可能,但是我不记得该怎么做,也不记得我说的那样,由于我的英语不好,我找不到任何相关的帖子来满足我的要求,尽管因为我确定这个问题已经在 SO 上发布,即使您只是链接它而没有详细解释,它也很有帮助。
谢谢。
[更新]
感谢您的回答。我只是想使用以前的值来避免子查询,从而避免大量的冗余输入,并使整个代码更具可读性。正如 Mosty Mostacho 所描述的,我已经使用了两种方法(子查询或两次编写整个语法来计算另一个值),如果这在 MySQL 中使用不可行或风险很大,我当然可以接受上面的这两种方法。对困惑感到抱歉。