mysql - 带有过滤选项的 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 = (
解决方案
感谢上面的@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
如果有人在谷歌上遇到这个问题,我就是这样解决的,感谢您与我讨论!
推荐阅读
- r - 如何计算给定时间间隔内的小时数
- visual-studio-code - 级联 eslint 配置文件
- javascript - 如何制作圆形输入 type=color 元素?
- powershell - 如何在 PowerShell 中“grep”并显示周围的行/上下文?
- c++ - 重载 std::sqrt
- r - 通过 R 将数据上传到 PostgresSQL 12 的最快方法
- version-control - 在 MkDocs 代码块中显示应用程序源代码文件
- python - C_Python 不释放缓冲内存
- javascript - 尽管返回 false,但表单 onsubmit 不起作用
- c# - 为多对多关系创建默认关系对象,并在我的数据库上下文中保持更改?