| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > Среднее значение каждых n-сторок |
| Автор: bernex 5.9.2010, 16:02 | ||
Есть таблица MySQL:
Каждую секунду кидаются значения. В одной такой таблице 20 миллионов записей. Задача: Выбрать набор значений одного типа (TYPE = 1), с усредненными значениями за час или минуту. Также в строке должен остаться DATE для определения минуты или часа? Прошу помочь... спасибо... |
| Автор: Anark1 5.9.2010, 20:13 | ||
| Можно, например написать функцию извлекающую из DATE часы или минуты, то есть HOUR(DATE) или MIN(DATE), соответствующие запросы:
Придумал навскидку, не проверял, но идея такова. |
| Автор: bernex 5.9.2010, 20:35 |
| data там int в ввиде цифры timestamp в формате int будет работать HOUR? |
| Автор: Zloxa 5.9.2010, 20:45 |
rtfm AVG одинаковые часы разных суток схлопнутся в одну группу - ничо так? |
| Автор: Zloxa 5.9.2010, 22:58 | ||
| оп... проглядел. ничетак, что timestamp в MS Sql и в MySQL суть разные вещи и в MS таймстамп в дату кастовать - абсурд?
Ты ведь сам привел ссылку с фунциями даты, не ужели не удосужился сам ее и прочитать. Тогда, быть может ты понял бы о чем толкует ТС. Anark1, дружище, ты вот если сам не в теме, других с понтолыку не сбивай пожалуйста. |
| Автор: Anark1 5.9.2010, 23:12 |
| Zloxa, если у человека возникают такие вопросы когда он работает с timestamp с базой mysql, не знает функций и не знает как составить структуру запроса (иначе он, наверное, формулировал бы вопрос по-другому), то по-моему нет ничего плохого в моем желании ему помочь. Накидал человеку идей, ссылок, у него есть возможность почитать и разобраться. Кстати, спасибо за замечания, сам учту это, хоть наверное и не скоро придется что-нибудь делать с mysql. Буду рад прочитать пояснение. Да и есть такой момент, что ты сам пока что ничего не предложил для автора. Или это у тебя такой стиль комментариев? Недаром же столько в "Флейме" набил И манера общения интересная, способ самовыражения что-ли? P.S. Не забудь поставить "-3" этому моему посту |
| Автор: Zloxa 5.9.2010, 23:34 |
У меня не хватает компетенций помочь автору. Потому и молчу. Однако у меня хватает компетенций понять что ты, как и я не в теме. И вижу что тебя не гнушает выдавать за цимес отрыжку так и не переваренного тобой продукта. Я не могу оценить способен ли ТС самостоятельно определить качество твоих советов, потому помогаю ему, комментируя и оценивая твои посты. да да, обязательно почитай в MSDN про timestamp. Или мне потрудиться тебе сцылочку подогнать? |
| Автор: djamshud 6.9.2010, 12:15 |
| бррр, неправильно понял ТС. |
| Автор: Zloxa 6.9.2010, 12:32 | ||
| djamshud, ему надо сгруппироваться с гранулярностью по часу или минуты и посчитать среднее. если бы вместо таймстампа было бы просто целое число, обозначающее количество секунд с начала чего та это было бы чтото вроде:
но я не знаю можно ли так работать с таймстампом. Еще как вариант - привести к строке по формату вроде 'DDMMYYYYHHMM' и группироваться по нему. Но что есть реальное тру - я хз. Функции работы с датами в разных диалектах столь специфичны..... |
| Автор: Anark1 6.9.2010, 14:30 |
| Zloxa, товарищ, да ты тот еще шутник Начнем с того, что я нигде не писал, что варианты, которые я предлагаю гарантированно будут работать, ладно ты такой классный утер мне нос, но сам ты ничем не лучше. Хотя бы даже процитирую тебя следуя твоей же логике, на кой черт писать тогда то что ты обозначил в предыдущем посте, какие-то варианты? Не знаешь - не пиши. Как насчет создать тему во "Флейме" и повоевать сам с собой? Тебе этого, похоже, не хватает. По поводу timestamp, я тогда не поленился, создал табличку с полем timestamp, забил ее данными, посмотрел CAST. Даты разумеется вышли абсолютно левые, но даже в таком виде это работало (получался нужный вид и не было ошибок), почему бы автору в таком случае не попробовать этот вариант на mysql? Я еще чисто ради интереса просмотрел одним глазом некоторые темы, в которых ты поучаствовал А перлы вроде заставляют долго и с улыбкой вспоминать об этом. Удачи тебе |
| Автор: Zloxa 6.9.2010, 14:36 |
Спасибо! |
| Автор: djamshud 6.9.2010, 23:28 |
| Zloxa, >если бы вместо таймстампа было бы просто целое число, обозначающее количество секунд с начала чего та это было бы чтото вроде: UNIX_TIMESTAMP(timestamp) дает timestamp в православном отсчете секунд с 1970-го года. Я когда-то воротил софтинку, которая делала в том числе и такие выборки. Сейчас найду и попробую раскурить ее конфиги. |
| Автор: djamshud 7.9.2010, 01:44 | ||
Блин, фэйл. Нашел тот конфиг, в комментарии к нему прочитал, что пытался написать правильный запрос, но гугл предлагал креативы с подфункциями и джоинами - я не понял, как это, и в том же конфиге зафигачил процедурку group_by_interval, которая и занималась агрегацией по временным интервалам, благо записей было всего несколько десятков тысяч. В итоге каша выглядела так:
Так что я присоединяюсь к вопросу ТС, мне тоже интересно, как это сделать правильно. |
| Автор: bernex 7.9.2010, 19:34 | ||
Сорри всем, табличка все же постгрес....
|
| Автор: Akina 7.9.2010, 20:09 |
| В постгрессе можно сделать группировку по timeinterval между датой в timestamp и точкой времени, заведомо меньшей, чем наименьшая в таблице (или наоборот, с текущей), установив стиль с нужной точностью (и, если нужно, выравниванием). |
| Автор: bernex 7.9.2010, 20:25 |
| выше пост, вставил туда код.... спасибо всем, работает! |
| Автор: Zloxa 7.9.2010, 22:05 | ||
забавные, однако, повороты
|