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 :: Статистика: среднее значение, кол-во просмотров, оценка и т.п.
Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2010
Помог: 0 раз(а)
На сайте выводится фотка, далее надо угадать возраст по фотке. Нужна следующая статистика:
1) кол-во выводов данной фотки
2) среднее значение всех вариантов ответов всех пользователей (т.е. средний возраст)
3) снизу фотки предлагается оценить ее по 5-бальной шкале. тут тоже нужен средний бал и общее кол-во данных оценок.
имеется одна таблица с данными пользователя
--------
1) итак, с первым вроде как все понятно, просто создаем в таблице еще одну колонку с числом просмотров, которая каждый раз при вызове определенной строки увеличивается на 1
2) а вот со вторым не знаю как сделать, если находить среднее значение, то получается придется абсолютно все значения хранить в базе или текстовом файле? а если значений несколько тысяч, то думаю такое решение не подойдет. может какая функция присутствует для этого?
3) ну и в принципе 3-е это практически тоже самое что и первые 2.
прошу помощи в общем, я недавно начал осваивать php и mysql, долго думал над вышеизложенными вопросами, но рационального решения не пришло.
Мелкий
Отправлено: 14 Декабря, 2010 - 18:26:51
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
1) да, один update /**/ field=field+1
2) в одно большечисловое поле записывать сумму. Для среднего делить на количество голосов.
А несколько тысяч значений в таблице - величина довольно игрушечная. Вот несколько сотни тысяч уже интереснее. Тем более таблица-то мелкая - только 2 числовых поля.
3) аналогично п2.
----- PostgreSQL DBA
DlTA
Отправлено: 14 Декабря, 2010 - 18:43:08
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
2) если нужно только среднее значение то проще добавить еще 2 поля к П1
в первом поле хранить количество оцениваний во втором среднее число
средеее число определяется по формуле:
среднееЧисло(n+1) = (среднееЧисло(n)*количествоПросмотров(n) + оценкаПользователя(n+1)) / количествоПросмотров(n)++;
среднееЧисло(n+1), почему +1? разве не +значение оценки или я что-то не так понял?
таблицу новую создавать нужно? в смысле лучше новую создать или без разницы?
JROUD
Отправлено: 14 Декабря, 2010 - 22:13:57
Гость
Покинул форум
Сообщений всего: 78
Дата рег-ции: Нояб. 2009
Помог: 0 раз(а)
Stahanovec, а тебе нужно иметь все варианты ответов или только среднее значение, если второй вариант, то можно хранить в одной ячейке средний бал, а во второй количество ответов, таким образом, думаю, посчитать среднее арифметическое не составит труда.
Stahanovec
Отправлено: 15 Декабря, 2010 - 14:47:40
Новичок
Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2010
Помог: 0 раз(а)
мне нужно выводить следующую статистику (это по первому и второму пункту): количество угадываний, количество верно угаданных и средний результат всех данных ответов. Думаю для этого больше подходит вариант Мелкого. хранить сумму в одной ячейке, общее кол-во угадываний в другой и кол-во правильных ответов в третьей. так и получается, что средняя оценка это сумма всех ответов поделить на кол-во ответов, по сути это и есть среднее арифметическое.
JROUD, только вот не пойму, ты пишешь:
Цитата:
то можно хранить в одной ячейке средний бал, а во второй количество ответов, таким образом, думаю, посчитать среднее арифметическое не составит труда.
среднее арифметическое ты будешь искать из среднего бала и кол-ва ответов? это же не то совсем
Stahanovec
Отправлено: 15 Декабря, 2010 - 17:04:49
Новичок
Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2010
Помог: 0 раз(а)
и еще вопрос: вот я создал вторую таблицу. ведь надо как-то связать их? я сделал такую же колонку uniq_id как и в первой таблице, но как сделать так, чтобы при регистрации данные заносились в две таблицы? просто вручную создать еще один запрос в базу? или же можно как-то автоматически связать?
------------
пробую сделать ручной запрос, но не работает
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
а можно както не вручную? силой мысли? создайте ещё один запрос или на крайний случей UNION в sql запросе.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Stahanovec
Отправлено: 15 Декабря, 2010 - 19:17:23
Новичок
Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2010
Помог: 0 раз(а)
я не имел ввиду силу мысли, я имел ввиду возможность объединения таблиц так, чтобы если в одной из них колонка заполняется, то и в другой таблице колонка с тем же именем заполняется автоматически тем же значением. вот как щас делаю, не работает
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.