计算 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。
我想计算这两个值的百分比:
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。