我试图计算两个特定日期条件字段的总数,这必须显示为 Chronic_Load
.
然后我想做一个类似的计算,但有一个不同的日期标准,必须显示为 Acute_Load
.
那么我想第三次计算在哪里 Chronic_Load
除以 Acute_Load
,即前两次计算的两个值。
计算一:
SELECT sum((rpe * duration)*1) AS "Acute_Load" FROM users_data where date between adddate(now(),-7) and now()
计算二:
SELECT sum((rpe * duration)*1.5) AS "Chronic_Load" FROM users_data where date between adddate(now(),-28) and now()
计算三:
SELECT sum(Acute_Load / Chronic_Load) AS "ACWD"
如何将所有这些与中的两个不同标准结合起来?
2条答案
按热度按时间idfiyjo81#
我建议写得更简洁一些。以下假设
date
确实是一个日期,而且永远不会在将来:注意这些变化:
日期比较应使用
date
s、 不是datetime
s。这个
else
聚合上不需要子句。他们无视NULL
价值观。列别名不需要转义,因此转义字符只会使查询混乱。
区间运算比
adddate()
,在我看来。它也更通用,适用于任何时间单位。mrphzbgm2#
把“更广泛”的限制放在
WHERE
条款。对于“更窄的”使用CASE
如果日期不在范围内,那就等于零。