mysql - 如何在不使用 with..as 的情况下计算 SQL 中的百分比?
问题描述
这是查询:
select grade_c as grade, count(c.grade_c) as num from `tblCustomerFeedback` c
join `tblOrders`o on c.`invoice_n`=o.`invoice_n`
join `tblProducts` p on o.`productID_n`=p.`productID_n`
where productName_c LIKE "%Premier%"
group by c.grade_c
结果如下:
如何在不使用 with .. as 的情况下以最佳方式计算百分比,因为它在这个版本的 MySQL(5.6.10)中不可用?
解决方案
Upgrade! This is much easier with window functions. In earlier versions, you can use variables:
select grade, num, num / total
from (select grade_c as grade, count(*) as num,
(@sum := @sum + count(*)) as total
from `tblCustomerFeedback` c join
`tblOrders` o
on c.`invoice_n` = o.`invoice_n` join
`tblProducts` p
on o.`productID_n` = p.`productID_n` cross join
(select @sum := 0) params
where productName_c LIKE "%Premier%"
group by c.grade_c
) g;
推荐阅读
- xamarin - 未从 B2C 登录返回
- flutter - 如何使用 webview 插件将网页保存在颤振中,以便用户可以离线查看?
- c++ - 回调参数 C++ 中的协方差
- sql-server - 如果磁盘标签发生更改,如何重新配置 SQL Server 群集?
- redux - 我试图避免在 state reducer 中调用 dispatch,我不确定 redux-thunk 是否是我需要的解决方案
- c# - 对 Float 与 Double 基准测试感到困惑
- java - Ktor 创建一个额外的 Java 进程
- python - 我需要我的脚本运行几行直到任务完成
- c++ - "向量" 和有什么不一样
v(100)”和“向量 v[100]”? - php - 从安全的 SSL 路径调用和运行这个 php curl 函数的“正确方法”是什么?