В настоящее время я работаю над написанием генераторов отчетов.Для одного отчета мне нужно сделать разбивку по заданному признаку (поставщику, пользователю ведения журнала, языку и т. Д., Который для каждой строки содержит название интересующего меня признака, число элементов, соответствующих этому признаку, и процентное соотношениеиз общего числа элементов, представленных на этом рисунке. Первые два не проблема, третий -.
Например, чтобы получить разбивку по языку, я бы использовал такой запрос.
SELECT lang_id,
COUNT(IF(open=TRUE,1,NULL)) AS lang_total
FROM table
GROUP BY lang_id;
Это дает мне количество элементов для каждого языка.
Я могу получить общее количество элементов в таблице и достаточно просто сохранить его в переменной с простым счетом.
SELECT @totalOpen:=COUNT(*) FROM table WHERE open = TRUE;
Теперь я хочу добавить третий столбец, который представляет собой число в lang_total, разделенное на значение в @totalOpen, умноженное на 100 (другими словами, процентное соотношение всех элементов, которые соответствуют критериям).следующее:
Это бит, с которым у меня проблемы, потому что, насколько я могу судить, вы не можете использовать статистические столбцы в вычислениях.ЦИИ.
SELECT lang_id,
COUNT(IF(open=true,1,NULL)) AS lang_total
(lang_total/@totalOpen)*100 as lang_percent
FROM table
GROUP BY lang_id;
Я уверен, что в MySQL должен быть способ сделать это, но я не смог отследить его.Кто-нибудь может помочь с этим?