MySQL - нужно сделать подсчет в процентах
-
sure777
MySQL - нужно сделать подсчет в процентах
здравствуйте. есть пользователи и нужно в процентах подсчитать сколько мужчин и женщин. я как понимаю в запросе делается это все, а не средствами php.
-
sure777
Re: MySQL - нужно сделать подсчет в процентах
А как в базе отмечены М и Ж? кто мешает написать вот так:
Код:
Код:
Код: Выделить всё
select (count(мужчин) / count(всего_людей) * 100 ) as 'Процент мужчин'?-
Coutty
Re: MySQL - нужно сделать подсчет в процентах
Delirium, сопротивление СУБД мешает
Параметр в COUNT() - имя столбца. И считать надо всё по одному столбцу. Я полчаса сидел и решал эту задачку. Дошёл уже до UNION'ов и JOIN'ов, но как-то не осилил. Почему-то подзапросы моя MySQL'ка не обрабатывает, а без них ничего и не выходит.
sure777, может быть всё-таки средствами php?
Два запроса:
Код:
а потом одно делить на другое; из единицы вычесть результат деления.
Либо так:
Код:
Тогда вернёт столбец num с двумя строками - кол-во мужчин и общее количество пользователей. Можно добавить и строку с женщинами, если имеется и третий пол - неопределённый.
Но посчитать проще средствами php)
Параметр в COUNT() - имя столбца. И считать надо всё по одному столбцу. Я полчаса сидел и решал эту задачку. Дошёл уже до UNION'ов и JOIN'ов, но как-то не осилил. Почему-то подзапросы моя MySQL'ка не обрабатывает, а без них ничего и не выходит.sure777, может быть всё-таки средствами php?
Два запроса:Код:
Код: Выделить всё
SELECT COUNT(*) AS `m` FROM `users` WHERE `sex`='m';
SELECT COUNT(*) AS `all` FROM `users`;а потом одно делить на другое; из единицы вычесть результат деления.
Либо так:
Код:
Код: Выделить всё
SELECT COUNT(*) AS `num` FROM `users` WHERE `sex`='m' UNION SELECT COUNT(*) FROM `users`;Тогда вернёт столбец num с двумя строками - кол-во мужчин и общее количество пользователей. Можно добавить и строку с женщинами, если имеется и третий пол - неопределённый.
Но посчитать проще средствами php)
-
Delirium
Re: MySQL - нужно сделать подсчет в процентах
Цитата Coutty:
Параметр в COUNT() - имя столбца. И считать надо всё по одному столбцу.
Цитата sure777:
есть пользователи и нужно в процентах подсчитать сколько мужчин и женщин
если есть пользователи, то наверняка есть булево или чар поле (bool, char), в которых есть 1-0 или М-Ж. Count по этому столбцу посчитать не проблема же? Сделать временную таблицу в памяти из нескольких полей (мужчин, женщин, всего). И потом уже считать как надо.
Примерно вот так если:
Код:
Так не пойдет?
Параметр в COUNT() - имя столбца. И считать надо всё по одному столбцу.
MySQL - нужно сделать подсчет в процентах
Цитата sure777:
есть пользователи и нужно в процентах подсчитать сколько мужчин и женщин
MySQL - нужно сделать подсчет в процентах
если есть пользователи, то наверняка есть булево или чар поле (bool, char), в которых есть 1-0 или М-Ж. Count по этому столбцу посчитать не проблема же? Сделать временную таблицу в памяти из нескольких полей (мужчин, женщин, всего). И потом уже считать как надо.
Примерно вот так если:
Код:
Код: Выделить всё
create table #Percentage
(
[men] int,
[women] int,
[totalcount] int
)
insert into #Percentage ([men])
select count(people) from OriginalTable where Sex= 'МУЖИК'
insert into #Percentage ([women])
select count(people) from OriginalTable where Sex= 'ЖЕНЩИНА'
insert into #Percentage ([totalcount])
select count(people) from OriginalTable
select ([men] / [totalcount] * 100 ) as 'Процент мужчин' from #Percentage
select ([women] / [totalcount] * 100 ) as 'Процент женщин' from #Percentage
drop table #PercentageТак не пойдет?
-
Coutty