Форум → Разработка → Базы данных → разбиение данных по временным промежуткам
разбиение данных по временным промежуткам
Страницы: ← Предыдущая страница →
-
9 июля 2010 г. 14:25, спустя 6 минут 22 секунды
Givi, как это сделать в PHP я не спрашивал, я спрашивал про MySql) согласись размер кода огромный
artoodetoo, пасиб, уже что-то ближе, сейчас подумаю -
9 июля 2010 г. 14:34, спустя 9 минут 36 секунд
вот чтобы небыло тыщ, делай group by. а чтобы мозг твой не расплавился что именно группировать - группируй по одному полю времени (+ опционально по полю id)
схематично - я использую тип INT для времени - для простоты:$sql = "SELECT round(({$now}-v.visited)/{$interval}) AS ago, count(*) AS cnt FROM `visits` AS v GROUP BY ago";
мне таки кажется, что цель посчитать количество заходов за интервал, а не количество заходов по пользователям, поэтому здесь группировка только по усеченному времени
привязка к visited плохо( получается не все интервалы выводит, а надо бы чтоб ноль выводил -
9 июля 2010 г. 14:37, спустя 2 минуты 29 секунд
Да и вообще как-то ведь нужно от работы на пару минут отвлекаться.
я вот отвлекусь сейчас = схожу куплю вентилятор на видяху на бук новый а то моему звезда пришла чото совсем)))))Сапожник без сапог -
9 июля 2010 г. 14:52, спустя 15 минут 2 секунды
Givi, +1 лишь бы не работать ;)
нако ТС, погоняй:<?php /*—————————————- CREATE TABLE `visits` ( `login` varchar(20) NOT NULL default '', `visited` int(11) NOT NULL default '0', `duration` int(11) default NULL, PRIMARY KEY (`login`,`visited`) ); INSERT INTO `visits` VALUES ('artoodetoo', 1278663805, 100); INSERT INTO `visits` VALUES ('guest', 1278667815, 102); INSERT INTO `visits` VALUES ('durov', 1278667831, 85); INSERT INTO `visits` VALUES ('artoodetoo', 1278667925, 52); —————————————–*/ error_reporting(-1); define('TIMEFMT', 'd.m.Y H:i:s'); date_default_timezone_set('Asia/Yekaterinburg'); $db_host = 'localhost'; $db_name = 'zhopa'; $db_username = 'zhopa'; $db_password = '123'; $discrete = 1; // number of minutes in interval $interval = 60 * $discrete; $link_id = mysql_connect($db_host, $db_username, $db_password); mysql_select_db($db_name, $link_id); if (isset($_GET['now']) && isset($_GET['from']) && isset($_GET['to'])) { $now = intval($_GET['now']); $from = intval($_GET['from']) * $interval; $to = intval($_GET['to']) * $interval; $sql = "SELECT v.login, v.visited FROM visits AS v WHERE v.visited BETWEEN {$now} - {$to} AND {$now} - {$from}"; $query_id = mysql_query($sql, $link_id); echo 'At: ' . date(TIMEFMT, $now) . ', interval ' . $_GET['from'] . ' - ' . $_GET['to'] . ' minutes ago' ."<br/>\n"; echo "<hr/>\n"; while ($arr = mysql_fetch_assoc($query_id)) { echo $arr['login'] . ' was ' . date(TIMEFMT, $arr['visited']) . "<br/>\n"; } echo "<hr/>\n"; $ref = $_SERVER['PHP_SELF']; echo '<a href="' . $ref . '">Return to list</a>' . "<br/>\n"; } else { $now = time(); $sql = "SELECT floor(({$now}-v.visited)/{$interval}) AS ago, count(*) AS cnt FROM visits AS v GROUP BY ago"; $query_id = mysql_query($sql, $link_id); echo 'Now: ' . date(TIMEFMT, $now) . "<br/>\n"; echo "<hr/>\n"; while ($arr = mysql_fetch_assoc($query_id)) { $from = $arr['ago'] * $discrete; $to = ($arr['ago'] + 1) * $discrete; $ref = $_SERVER['PHP_SELF'] . '?now=' . $now . '&from=' .$from . '&to=' . $to; echo '<a href="' . $ref . '">' . $from . ' - ' . $to . ' minutes ago</a> was ' . $arr['cnt'] . ' visits ' . "<br/>\n"; } echo "<hr/>\n"; }
Спустя 96 сек.я вот отвлекусь сейчас = схожу куплю вентилятор на видяху на бук новый а то моему звезда пришла чото совсем)))))
конечно, виртуалки то они того, греют.ιιlllιlllι унц-унц -
9 июля 2010 г. 14:51, спустя 23 часа 58 минут 51 секунду
конечно, виртуалки то они того, греют.
:D
а ты тоже с Ебурга?
Дуд, че за ноут? -
9 июля 2010 г. 14:53, спустя 2 минуты 21 секунду
с подъебуржья яСпустя 40 сек.на карте-сотке от ебурга вниз 2 смιιlllιlllι унц-унц -
9 июля 2010 г. 14:53, спустя 18 секунд
Дуд, че за ноут?
старье
asus f3s + память апгрейд до 4гб. 3 года ему(клава сама 3 раза написала "ебу" .. не спроста …:D ) ужеСапожник без сапог -
9 июля 2010 г. 14:57, спустя 4 минуты
помоему ТС за такую работу просто обязанпоцеловать меня в ж*заплюсоватьСпустя 156 сек.ебаный парсер бибикода заменяет "&'" на "&"ιιlllιlllι унц-унц -
9 июля 2010 г. 15:04, спустя 6 минут 31 секунду
ну хоть какой-то профит сегодня
алексувэ меня не догнатьιιlllιlllι унц-унц -
9 июля 2010 г. 15:06, спустя 1 минуту 50 секунд
artoodetoo, хахахахах КАРМАДРОЧЕР!!!!!!!!!
давай те в шаблоне * 100 напишу?)))))))))))))Сапожник без сапог -
-
-
9 июля 2010 г. 17:05, спустя 1 час 54 минуты 14 секунд
в моей деревне не продают винтиляторы сука :(
phpdude, песдуй в магазин уже!)
зато ахуенно прогулялся при солнышке, стопудово загорел)) встретил одноклассника, которого не видел года 3)Сапожник без сапог -
10 июля 2010 г. 7:26, спустя 14 часов 20 минут 40 секунд
хехе, заметил ошибку :)
после первого if-a должно быть$now = intval($_GET['now']); $from = intval($_GET['from']) * 60; $to = intval($_GET['to']) * 60;
оно работало правильно только для $discrete=1, а с исправлением - для любой нарезкиιιlllιlllι унц-унц
Страницы: ← Предыдущая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!