表中有三列:
| PLANNING | ASSESSMENTANDDATA |TOTAL
| One Word | One Test |
| Two Word | Two Test |
我需要更新每个记录的“total”列,以便如果“planning”列包含“one”,那么在该行的运行总计中添加1。然后,如果“assessmentanddata”包含“one”,则将另一个1添加到该行的运行总计中,然后用2更新“total”。下一条记录是-如果“planning”列包含“two”,则将2添加到该行的运行总数中。如果'assessmentanddata'包含'two',则将另一个2添加到行的运行总计中,然后用4更新'total'。
| PLANNING | ASSESSMENTANDDATA |TOTAL
| One Word | One Test | 2
| Two Word | Two Test | 4
到目前为止我已经做到了:(工作正在进行中-我相信还远没有完成)
SET @runtot := 0;
SELECT
id,
SUM(CASE
WHEN PLANNING like '%One%' THEN @runtot := @runtot + 1
WHEN PLANNING like '%Two%' THEN @runtot := @runtot + 2
WHEN ASSESSMENTANDDATA like '%One%' THEN @runtot := @runtot + 1
WHEN ASSESSMENTANDDATA like '%Two%' THEN @runtot := @runtot + 2
END)
FROM RUBERIC
GROUP BY id
1条答案
按热度按时间py49o6xq1#
我不认为你需要
Group By
与Sum()
聚合。如果我们使用Case .. When
表达式,则它将改为嵌套表达式。但是,我们可以利用mysql的隐式转换和类型转换行为,例如,
LIKE %..%
运算符的返回值可以考虑为0/1。我们可以用它来加,而不是写多个Case .. When
表达。请尝试以下操作: