Mysql交叉表查询百分比计数?

标签 mysql

早上好,是否可以通过交叉表查询计算 2 个计算列的百分比,我的缩减查询如下?

Select
  a.ContactFullName As Adviser,
  Sum(Month(b.CaseDate) = 1) As Jan,
  Sum(Month(b.CaseDate) = 2) As Feb,
  Sum(Month(b.CaseDate) = 3) As Mar,
  Count(b.CaseID) As Total,
  Count(b.StatusSubmittedDate) As Comms

From
  tblcontacts a Inner Join
  tblcases b On a.ContactID = b.ContactAssignedTo
Group By
  a.ContactFullName With Rollup

这会将月份输出为显示每月案例的列,“总计”列对行进行计数,而“通讯”列仅对带有日期的案例进行计数。我想做的是计算 Total/Comms 的百分比;

Total | Comms | %_Share
100   | 50    | 50%
346   | 53    | 15%
278   | 89    | 32%

我是否看错了方式,我应该创建多个查询来实现吗?

感谢您的浏览

最佳答案

只需选择另一列:

Select …,
  100*Count(b.StatusSubmittedDate)/Count(b.CaseID) As `%_Share`
From …

这是 100*Comms/Total,这是您预期输出指示的方式,而不是您在文本中编写的 Total/Comms。

据我所知,直接重用一个计算列来计算另一计算列中的值是不可能的。但是重复计算 Count 的开销应该不会太严重,也许 MySQL 甚至会检测到这些常见术语并只计算一次,我不知道。

关于Mysql交叉表查询百分比计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11966870/

相关文章:

MySQL子查询WHERE过滤掉太多

php - 从 Google Analytics 获取所有数据

php - CDbConnection 无法打开数据库连接 : could not find driver in Yii

mysql - Sphinx 搜索或 MySQL 庞大的数据库搜索引擎

mysql - SQL 连接具有重复条目的多个表和 count() group by

java - Hibernate Persistencebag 从列表中删除元素

mysql - 我该如何修复sql中的这个语法错误?

php - 当我从选择类型中选择 'any' 选项并单击提交时,我想显示 MySQL 数据库中的所有数据

php - 在生产中使用 mysqli_connect() 从 Mysql 选择行时出现问题

mysql - 在 MySql 中按月份返回一组当年的结果