Показать полную графическую версию : нужно сделать подсчет в процентах
здравствуйте. есть пользователи и нужно в процентах подсчитать сколько мужчин и женщин. я как понимаю в запросе делается это все, а не средствами php.
Delirium
02-11-2009, 01:10
А как в базе отмечены М и Ж? кто мешает написать вот так:
select (count(мужчин) / count(всего_людей) * 100 ) as 'Процент мужчин'?
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
02-11-2009, 09:02
Параметр в COUNT() - имя столбца. И считать надо всё по одному столбцу. »
есть пользователи и нужно в процентах подсчитать сколько мужчин и женщин »
если есть пользователи, то наверняка есть булево или чар поле (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
Так не пойдет?
Delirium, не проще ли через php?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.