Сортировка по полю и вывод статистики в процентах

GrinVich

Новичок
Сортировка по полю и вывод статистики в процентах

Имеется таблица users:
PHP:
CREATE TABLE `users` (
 `userid` varchar(50) NOT NULL default '',
 `ip` varchar(15) NOT NULL default '',
 `country` varchar(2) NOT NULL default '';
Нужно отсортировать и вывести так чтобы получилось примерно так:

Страна | Количество | %
-------------------------------------
US | 55 | 33%
DE | 14 | 5%
RU | 5 | 1%

и т.д.

Количество болшинства пользователей должно быть в самом вверху,
сортировка по странам и в процентном соотношении пользователей.
 

GrinVich

Новичок
Найти не могу ответ на вопрос, поэтому спрашиваю.
Максимум что у меня получается так это отсортировать записи по стране, а не по количеству пользователей к определенной стране.

-~{}~ 27.03.07 01:33:

Тут поискал ответ и наткнулся на выход:
PHP:
SELECT country, COUNT(*) FROM users GROUP BY country;
Правильно ли я сделал?
 

GrinVich

Новичок
Не могу попробывать, т.к. таблица еще не заполнена.
Могу предположить чисто теоретически.
Сейчас попробую на практике.

Еще остался один вопрос, как вывести процентное соотношение?
 

GrinVich

Новичок
Допустим в таблице всего 100 пользователей (т.е. 100 записей)
по стране US 10 пользователей, значит 10% от общего количества.
В таком виде я хочу видеть процентное соотношение по каждой стране.
 

kumich

Новичок
GrinVich

Чисто теоретически, как новичок новичку - я бы сделал селект по требуемой стране, посчитал количество ровс, потом селект по всем - опять считаем количество строк и помещаем во вторую переменную. А потом первую переменную делим на вторую и умножаем на 100. Вот только с синтаксисом не помогу, сам трачу кучу времени на такие вещи %(
 

GrinVich

Новичок
kumich если сделать как ты посоветовал, слишком большое количество запросов получиться.

Вообщем выборку я сделал, все работает как надо, осталось как то определить процентное соотношение.
 

hermit_refined

Отшельник
GrinVich
т.е. имея на руках массив стран с кол-вом юзеров в каждой, вы не можете опеределить, сколько всего юзеров, и посчитать проценты для каждой страны?..
 

zerkms

TDD infected
Команда форума
GrinVich
2 запроса

1. SELECT COUNT(*) FROM `users`
2. SELECT ... (COUNT(*) / $cnt * 100) AS `percent`
 

GrinVich

Новичок
Сделал так:
PHP:
/*Количество пользователей*/
$sql = 'SELECT COUNT(*) FROM users';
$result = mysql_query($sql) or die(mysql_error());
$total = mysql_result($result, 0);
echo "Количество пользователей: ".$total."<br>";

/*Количество пользователей отсортированных по странам*/
$sql = 'SELECT country , COUNT(*) FROM users GROUP BY country'; //
$result = mysql_query($sql) or die(mysql_error());
echo "<table border='1'>";
echo "<tr><th>Страна</th><th>Пользователи</th><th>%</th>";
while ($line = mysql_fetch_array($result)) {
	echo "<tr>";
    echo "<td>".$line['country']."</td>";
	echo "<td>".$line[1]."</td>";
	printf("<td>%.1f%s</td>",$line[1]/$total*100,"%"); 
	echo "</tr>";
}
echo "</table>";
Остался открытым 1 вопрос:
Как сделать чтобы страны в которых боьше всего пользователей отображалась в самом верху и т.д.
 

GrinVich

Новичок
Bitterman
так и думал, спасибо, т.е. в одном запросе нужно использовать и ORDER BY и GROUP BY.
 
Сверху