Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   нужно сделать подсчет в процентах (http://forum.oszone.net/showthread.php?t=155091)

sure777 30-10-2009 16:34 1256760

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

Delirium 02-11-2009 01:10 1258861

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

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

Coutty 02-11-2009 04:01 1258920

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 1259004

Цитата:

Цитата Coutty
Параметр в COUNT() - имя столбца. И считать надо всё по одному столбцу. »

Цитата:

Цитата sure777
есть пользователи и нужно в процентах подсчитать сколько мужчин и женщин »

если есть пользователи, то наверняка есть булево или чар поле (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 02-11-2009 19:08 1259578

Delirium, не проще ли через php?


Время: 22:22.

Время: 22:22.
© OSzone.net 2001-