Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Сложный запрос
McLotos  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



武士道
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1292
Пользователь №: 28342
На форуме: 6 лет, 1 месяц, 14 дней
Карма: 28




Ребят, всем привет!
Не могу сообразить как получить данные с таблицы.
Есть такой запрос
select
`number`,`DateEnd`,
SEC_TO_TIME(TIMESTAMPDIFF(SECOND,`DateEnd`, `DateChange`)) as `diff`
from `Table`
where `statusId` = 9
and `DateChange` is not null
and
`DateEnd` >= '2017-01-20 00:00:00'
and `DateEnd` < '2017-01-30 00:00:00'
ORDER BY `number`, `DateEnd` ASC

Он выводит по каждому number несколько записей за каждый день.
Мне как-то из этих данных нужно получить среднее значение diff для каждого number за каждый день.
Что-то вроде
number | date | diff
100 | 2017-01-30 | 0:10:15

Т.е. number 100 в среднем был на линии 10 минут 30го января. При этом у конкретного number может быть 20 записей за этот день разной длительности


--------------------
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1788
Пользователь №: 20757
На форуме: 7 лет, 5 месяцев, 25 дней
Карма: 187




Надо сгруппировать по number, сложить все интервалы и разделить на количество записей.
select
`number`,`DateEnd`,
SEC_TO_TIME(SUM(TIMESTAMPDIFF(SECOND,`DateEnd`, `DateChange`))/COUNT(*)) as `diff`
from `Table`
where `statusId` = 9
and `DateChange` is not null
and
`DateEnd` >= '2017-01-20 00:00:00'
and `DateEnd` < '2017-01-30 00:00:00'
GROUP BY `number`
ORDER BY `number`, `DateEnd` ASC
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
McLotos  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



武士道
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1292
Пользователь №: 28342
На форуме: 6 лет, 1 месяц, 14 дней
Карма: 28




kaww
Я попробовал похожее решение, только с функцией AVG, но там получается что у одного number среднее значение больше 14и часов. Чего в принципе не должно быть. Потому-что человек в среднем за месяц не может быть на линии больше 14и часов (раз уж это среднее значение)


--------------------
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15395
Пользователь №: 4190
На форуме: 9 лет, 5 месяцев, 21 день
Карма: 470




Я бы так сделал:
1. В твой SELECT добавить собственно number и отдельной колонокой получить день месяца (или день года).
2. Обернуть данный запрос в другой, где сгруппировать одновременно по number и дню месяца (года), получить среднее время diff.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса