Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Статистика: среднее значение, кол-во просмотров, оценка и т.п.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: затрудняюсь
Stahanovec
Отправлено: 14 Декабря, 2010 - 18:17:17
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




На сайте выводится фотка, далее надо угадать возраст по фотке. Нужна следующая статистика:
1) кол-во выводов данной фотки
2) среднее значение всех вариантов ответов всех пользователей (т.е. средний возраст)
3) снизу фотки предлагается оценить ее по 5-бальной шкале. тут тоже нужен средний бал и общее кол-во данных оценок.

имеется одна таблица с данными пользователя
--------

1) итак, с первым вроде как все понятно, просто создаем в таблице еще одну колонку с числом просмотров, которая каждый раз при вызове определенной строки увеличивается на 1

2) а вот со вторым не знаю как сделать, если находить среднее значение, то получается придется абсолютно все значения хранить в базе или текстовом файле? а если значений несколько тысяч, то думаю такое решение не подойдет. может какая функция присутствует для этого?

3) ну и в принципе 3-е это практически тоже самое что и первые 2.

прошу помощи в общем, я недавно начал осваивать php и mysql, долго думал над вышеизложенными вопросами, но рационального решения не пришло.
 
 Top
Мелкий Супермодератор
Отправлено: 14 Декабря, 2010 - 18:26:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




1) да, один update /**/ field=field+1
2) в одно большечисловое поле записывать сумму. Для среднего делить на количество голосов.
А несколько тысяч значений в таблице - величина довольно игрушечная. Вот несколько сотни тысяч уже интереснее. Тем более таблица-то мелкая - только 2 числовых поля.
3) аналогично п2.


-----
PostgreSQL DBA
 
 Top
DlTA
Отправлено: 14 Декабря, 2010 - 18:43:08
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




2) если нужно только среднее значение то проще добавить еще 2 поля к П1
в первом поле хранить количество оцениваний во втором среднее число
средеее число определяется по формуле:
среднееЧисло(n+1) = (среднееЧисло(n)*количествоПросмотров(n) + оценкаПользователя(n+1)) / количествоПросмотров(n)++;

количествоПросмотров(n+1) = количествоПросмотров(n)++;

только надо избежать деление на 0 которое возникнит при первом голосе!

3) аналогично
 
 Top
Stahanovec
Отправлено: 14 Декабря, 2010 - 19:11:52
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




DlTA пишет:
среднееЧисло(n+1) = (среднееЧисло(n)*количествоПросмотров(n) + оценкаПользователя(n+1)) / количествоПросмотров(n)++;


среднееЧисло(n+1), почему +1? разве не +значение оценки или я что-то не так понял?

таблицу новую создавать нужно? в смысле лучше новую создать или без разницы?
 
 Top
JROUD
Отправлено: 14 Декабря, 2010 - 22:13:57
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




Stahanovec, а тебе нужно иметь все варианты ответов или только среднее значение, если второй вариант, то можно хранить в одной ячейке средний бал, а во второй количество ответов, таким образом, думаю, посчитать среднее арифметическое не составит труда.
 
 Top
Stahanovec
Отправлено: 15 Декабря, 2010 - 14:47:40
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




мне нужно выводить следующую статистику (это по первому и второму пункту): количество угадываний, количество верно угаданных и средний результат всех данных ответов. Думаю для этого больше подходит вариант Мелкого. хранить сумму в одной ячейке, общее кол-во угадываний в другой и кол-во правильных ответов в третьей. так и получается, что средняя оценка это сумма всех ответов поделить на кол-во ответов, по сути это и есть среднее арифметическое.

JROUD, только вот не пойму, ты пишешь:

Цитата:
то можно хранить в одной ячейке средний бал, а во второй количество ответов, таким образом, думаю, посчитать среднее арифметическое не составит труда.


среднее арифметическое ты будешь искать из среднего бала и кол-ва ответов? это же не то совсем
 
 Top
Stahanovec
Отправлено: 15 Декабря, 2010 - 17:04:49
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




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

(Отредактировано автором: 15 Декабря, 2010 - 17:52:57)

 
 Top
OrmaJever
Отправлено: 15 Декабря, 2010 - 19:07:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




а можно както не вручную? силой мысли? создайте ещё один запрос или на крайний случей UNION в sql запросе.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Stahanovec
Отправлено: 15 Декабря, 2010 - 19:17:23
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




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

PHP:
скопировать код в буфер обмена
  1. //запрос на ввод данных при регистрации
  2. $r = mysql_query("INSERT INTO users VALUES (NULL,'".strtolower($username)."','".md5($pass)."','".$email."','".$gender."','".$country."','".$city."','".$uniq_id."',0,'".$age."',NULL) ");
  3. if($r) {
  4. //далее вносим данные в другую таблицу
  5. mysql_query("INSER INTO stats (uniq_id) VALUES ('".$uniq_id."')");

(Отредактировано автором: 15 Декабря, 2010 - 19:19:51)

 
 Top
Stahanovec
Отправлено: 16 Декабря, 2010 - 15:18:40
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




нда уж. там просто синтаксическая ошибка, вместо INSERT стоит INSER
теперь работает
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB