2016-10-27 4 views
0

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

В базе данных MySQL у меня есть таблица с названием видео, в которой есть все созданные видео. структура что-то вроде этого

id 
owner 
title 
created_at 

У меня есть другой пользователь стол, что-то вроде этого

id 
name 
created_at 

Цель состоит в том, чтобы получить по следующей графике enter image description here

оси х месяц # y ось - количество видео в месяц

Как вы можете видеть, это показывает h ow много видео каждый пользователь, созданный каждый месяц. НО в первый месяц всегда 30 дней с даты создания пользователя. Так что для пользователя Ben это будет с 2016-10-01 по 2016-11-01, но для Рика это с 2016-08-01 по 2016-09-01

Так что для первого месяца Бена это другое с первого месяца Рика примерно на 60 дней.

Но в графе Я хочу, чтобы показать все из них, как месяц # 1

Мое решение на данный момент является «нормализовать» данные. Поэтому, чтобы получить данные для Бена, я взял разницу между фиксированной датой (я установил ее до 2016-01-01) и вычислил разницу дней.

Тогда я вычесть количество дней для всех видео и таким образом все видео первый месяц собирается быть 2016-01-01 к 2016-02-01

Это работает, но я на самом деле не уверен, что это лучший подход.

Кто-нибудь, кто лучше знает, как это сделать?

Благодаря

+1

Дружественное предложение использовать этот вид инструмента для отображения данных примера: http://www.tablesgenerator.com/text_tables. Он действительно помогает понять вашу схему данных и сделать ее более интуитивной. – Wistar

+0

sound ok для меня, но вместо использования фиксированной даты я бы использовал 'MIN (date)' –

ответ

0

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

Я обновил мое create_video событие, чтобы иметь свойство, подобное age_of_user. Затем я могу group_by age_of_user посмотреть, сколько видеороликов они загружали в любой месяц.

Что-то вроде

{ 
    age_of_user: { 
    days: 64, 
    weeks: 9 
    months: 2, 
    } 
} 

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^