Вычислить процентное соотношение между двумя значениями (случай суммы) - PullRequest
1 голос
/ 20 июня 2020

Я хочу вычислить процент этих двух значений:

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" значений, разделенных столбцами.

1 Ответ

2 голосов
/ 20 июня 2020

Разделите 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.

...