【发布时间】:2017-03-07 11:34:39
【问题描述】:
我有一个Statistics 表,如下所示
parent key value date
MASTER maths 400 2016-10-12
MASTER maths 200 2016-10-20
MASTER maths 350 2016-10-23
MASTER passed 20% 2016-10-25
MASTER passed 40% 2016-10-27
MASTER passed 30% 2016-10-28
MASTER maths 500 2016-11-12
MASTER maths 250 2016-11-20
MASTER maths 600 2016-11-23
MASTER passed 55% 2016-11-25
MASTER passed 75% 2016-11-27
MASTER maths 500 2016-12-12
MASTER maths 250 2016-12-20
MASTER maths 600 2016-12-23
MASTER passed 70% 2016-12-25
MASTER passed 65% 2016-12-26
MASTER passed 45% 2016-12-27
MASTER maths 500 2017-01-12
MASTER maths 450 2017-01-20
MASTER maths 770 2017-01-23
MASTER passed 87% 2017-01-25
MASTER passed 54% 2017-01-27
MASTER maths 900 2017-02-12
MASTER maths 250 2017-02-20
MASTER maths 500 2017-02-23
MASTER passed 67% 2017-02-25
MASTER passed 45% 2017-02-27
我需要使用 mysql 显示如下所示的输出
maths passed date
950 30% 2016-10
1350 65% 2016-11
1350 60% 2016-12
1720 70.5% 2017-01
1650 56% 2017-02
我写的查询如下
SELECT SUM(CASE WHEN key = 'maths' THEN value ELSE 0 END) AS maths,
SUM(CASE WHEN key = 'passed' THEN value ELSE 0 END) AS passed
FROM Statistics
WHERE parent = 'MASTER' GROUP BY MONTH(date) ORDER BY date ASC
但我是通过的总和而不是平均值,也就是说,如果我得到 20%、40% 和 30%,那么我应该得到平均值作为 30%,但对于我上面的查询,我得到了 90%。 % 也消失在结果中
谁能帮我解决这个问题
【问题讨论】:
-
value是什么字段类型?
-
@McNets 其
varchar -
@McNets 是的,你说得对....30%
-
你实际上并没有存储 '%' 是吗?!?!?!?!?!
-
是的,我将 % 存储在表中
标签: mysql sum aggregate average