计算 2 个值之间的百分比(求和)

Calculate percentage between 2 values (Sum Case)

我想计算这两个值的百分比:

SELECT 
  SUM(CASE WHEN status != 'Rectified' AND status != 'Surveyed' THEN 0 ELSE 1 END) as Attend, 
  SUM(CASE WHEN status != 'Rectified' AND status != 'Surveyed' THEN 1 ELSE 0 END) as Pend 
FROM Tickets 
WHERE Schedule Date BETWEEN '2020-06-01' AND '2020-06-30'

按列分隔的 "Attend""pend" 值的百分比。

将 2 个表达式除以 COUNT(*):

SELECT 
  100.0 * SUM(status = 'Rectified' OR status = 'Surveyed') / COUNT(*) as Attend, 
  100.0 * SUM(status != 'Rectified' AND status != 'Surveyed') / COUNT(*) as Pend
FROM Tickets 
WHERE ScheduleDate BETWEEN '2020-06-01' AND '2020-06-30'

或使用 AVG() 更简单:

SELECT 
  100.0 * AVG(status = 'Rectified' OR status = 'Surveyed') as Attend, 
  100.0 * AVG(status != 'Rectified' AND status != 'Surveyed') as Pend
FROM Tickets 
WHERE ScheduleDate BETWEEN '2020-06-01' AND '2020-06-30'

我简化了聚合表达式,因为 MySql 将布尔表达式计算为 0 或 1。