Мой текущий запрос:SQL в процентах, а не общей
SELECT Delaytype, SUM('Delayhours') as cnt
FROM delays
GROUP BY Delaytype;
Как получить cnt
в процентах, а не в сумме общих вхождений?
Мой текущий запрос:SQL в процентах, а не общей
SELECT Delaytype, SUM('Delayhours') as cnt
FROM delays
GROUP BY Delaytype;
Как получить cnt
в процентах, а не в сумме общих вхождений?
Я думаю, это то, что вы хотите:
SELECT Delaytype, SUM(Delayhours)/(SELECT SUM(Delayhours) FROM delays) * 100 as cntper
FROM delays
GROUP BY Delaytype
Или, если ваш DB поддерживает подзапросы, это должно быть более эффективным :
SELECT Delaytype, cnt/SUM(cnt) * 100 FROM (
SELECT Delaytype, SUM(Delayhours) as cnt
FROM delays
GROUP BY Delaytype
) AS GroupedDelays
Один из способов будет пересекать присоединиться общую сумму:
SELECT d.Delaytype, SUM(d.Delayhours)/total_delay as pct
FROM delays
CROSS JOIN (SELECT SUM(Delayhours) AS total_delay
FROM delays) t
GROUP BY d.Delaytype;
Процент от чего, все задержки? – canon
Итак, в настоящее время я получаю Delaytype - engineering = 4 Human error = 5 Я хочу, чтобы 4 и 5 (часы задержки) в процентах составляли не все инженерные и человеческие ошибки. – Creaven