如果需要,请选择MYSQL
伙计们,我有这样的东西:如果需要,请选择MYSQL,mysql,sql,Mysql,Sql,伙计们,我有这样的东西: select t1.milestone_id, sum(t2.value) / count(t2.value) as value2, value3 from ( SELECT milestone_id, SUM(value) value , CASE WHEN (status !='done') THEN (value ='0') ELSE value END as value3 FROM project_
select t1.milestone_id, sum(t2.value) / count(t2.value) as value2, value3
from (
SELECT milestone_id, SUM(value) value , CASE WHEN (status !='done') THEN (value ='0') ELSE value END as value3
FROM project_has_tasks
WHERE project_id='52' and milestone_id !=0
GROUP BY milestone_id
) t1
join (
SELECT milestone_id, SUM(value) value
FROM project_has_tasks
WHERE project_id='52' and milestone_id !=0
GROUP BY milestone_id
) t2
on t1.milestone_id >= t2.milestone_id
group by t1.milestone_id
order by t1.milestone_id asc
得到这个:
您能帮我将值3作为除0以外的值2获取吗
例如:
select t1.milestone_id, sum(t2.value) / count(t2.value) as value2, value3
from (
SELECT milestone_id, SUM(value) value , CASE WHEN (status !='done') THEN (value ='0') ELSE value END as value3
FROM project_has_tasks
WHERE project_id='52' and milestone_id !=0
GROUP BY milestone_id
) t1
join (
SELECT milestone_id, SUM(value) value
FROM project_has_tasks
WHERE project_id='52' and milestone_id !=0
GROUP BY milestone_id
) t2
on t1.milestone_id >= t2.milestone_id
group by t1.milestone_id
order by t1.milestone_id asc
谢谢您的建议。修改您的第一行:
SELECT t1.milestone_id, sum(t2.value) / count(t2.value) as value2, IF(value3=0, sum(t2.value) / count(t2.value), value3) as value3
IF语句的工作原理如下:
IF(,)
若表达式不为NULL且不为0,则视为真。谢谢您的建议。下面的代码工作正常:)
#1054-字段列表中的未知列“value2”忘记了计算value2如果我将使用:选择t1.milestone_id,总和(t2.value)/计数(t2.value)作为value2,如果(value3=0,总和(t2.value)/计数(t2.value),值3作为值3,则值3与值2相同
select t1.milestone_id, sum(t2.value) / count(t2.value) as value2, IF(value3 !='0', sum(t2.value) / count(t2.value), value3)as value3
from (
SELECT milestone_id, SUM(value) value , CASE WHEN (status !='done') THEN (value ='0') ELSE value END as value3
FROM project_has_tasks
WHERE project_id='52' and milestone_id !=0
GROUP BY milestone_id
) t1
join (
SELECT milestone_id, SUM(value) value
FROM project_has_tasks
WHERE project_id='52' and milestone_id !=0
GROUP BY milestone_id
) t2
on t1.milestone_id >= t2.milestone_id
group by t1.milestone_id
order by t1.milestone_id asc