首页 > 解决方案 > 带有过滤选项的 Google Chart 的 MySQL 查询百分比

问题描述

我有一个查询,总体上返回我需要的百分比:

SELECT
    CAST(((count(LOWER(`q3`)='no')/(select count(`q3`) from `data`))*100) as decimal (10,2))
FROM `data`
WHERE LOWER(`q3`)='no'

这将返回no在列中说的q3准确百分比(验证在 Excel 中运行数字)(q3 包含每条记录的是或否)。

但是,我想按月份和位置在谷歌图表中显示这些数据,所以我稍微构建了查询:

SELECT 
    DATE_FORMAT(date_submitted,'%b-%y') AS 'Month',
    CAST(((count(LOWER(`q3`)='no')/(select count(`q3`) from `data`))*100) as decimal (10,2)) AS 'MSO'
FROM `data` 
WHERE LOWER(`q3`)='no' AND store_list IN (5902) 
GROUP BY YEAR(date_submitted), MONTH(date_submitted)
ORDER BY YEAR(date_submitted) ASC, MONTH(date_submitted) ASC

这些数字不正确,取出位置(这部分将在显示图表的最终网站中替换,因此它是一个带有我欣赏的数字的 IN 看起来错误,但可能是多个)仍然给我错误的数字按月计算,把月份的东西拿出来给我一个错误的位置总数(很自然,把它们都放在上面,根本不起作用)。

一直在抚摸这个胡子,但不确定我哪里出错了,基本上需要输出为谷歌图表格式:

谷歌图表布局

但我得到的数字是 5 月 19 日 1.69、6 月 19 日 0.56 和 7 月 19 日 6.18 = (

标签: mysqlgoogle-visualization

解决方案


感谢上面的@WhiteHat 与我交谈,我的计数不起作用(可能是 MariaDB 的东西,我以我在谷歌上搜索过的 MySQL 格式尝试了它们,但没有用),因此作为替代计数案例似乎可以解决问题:

SELECT 
    DATE_FORMAT(date_submitted,'%b-%y') AS 'Month',
    CAST(((SUM(CASE WHEN LOWER(`q3`) = 'no' THEN 1 ELSE 0 END)/COUNT(*))*100) as decimal (10,2)) AS 'MSO'
FROM `data` 
WHERE store_list IN (5902) 
GROUP BY YEAR(date_submitted), MONTH(date_submitted)
ORDER BY YEAR(date_submitted) ASC, MONTH(date_submitted) ASC

如果有人在谷歌上遇到这个问题,我就是这样解决的,感谢您与我讨论!


推荐阅读