MySQL - нужно сделать подсчет в процентах

Ответить
Аватара пользователя
sure777

MySQL - нужно сделать подсчет в процентах

Сообщение sure777 »

здравствуйте. есть пользователи и нужно в процентах подсчитать сколько мужчин и женщин. я как понимаю в запросе делается это все, а не средствами php.
Аватара пользователя
sure777

Re: MySQL - нужно сделать подсчет в процентах

Сообщение sure777 »

А как в базе отмечены М и Ж? кто мешает написать вот так:



Код:

Код: Выделить всё

select (count(мужчин) / count(всего_людей) * 100 ) as 'Процент мужчин'?
Аватара пользователя
Coutty

Re: MySQL - нужно сделать подсчет в процентах

Сообщение Coutty »

Delirium, сопротивление СУБД мешает Изображение Параметр в 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 - нужно сделать подсчет в процентах

Сообщение Delirium »

Цитата Coutty:



Параметр в 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

Так не пойдет?
Ответить

Вернуться в «Программирование и базы данных»