2017-02-04 3 views
0

Работает в MonetDB, у меня есть столбец «entrytime», который содержит значение времени. У меня есть:monetdb, group by

select "minute"(entrytime) as unitTime, period 
    from schema1.zones 
    where date1 >= eDate and date1 <= xDate and id=256 
    group by unitTime, period 

Но я хочу, чтобы сгруппировать результаты на 15-й минуте границы, а затем возвращает наибольшее значение «период» для этого 15 минут блок, какие-либо идеи?

Спасибо.

ответ

0

вот пример R-решения. Я думаю, вам просто нужно преобразовать столбец входа в нужные интервалы времени? то вы можете запустить группу с помощью MAX()?

# run this line once 
# install.packages("MonetDBLite") 

library(DBI) 

x <- data.frame(entrytime = sample(1:1000 , 10000 , replace = TRUE) , period = sample(1:10 , 10000 , replace = TRUE)) 

head(x) 

x$intervals <- findInterval(x$entrytime , seq(0 , 1000 , by = 15)) 

db <- dbConnect(MonetDBLite::MonetDBLite()) 

dbWriteTable(db , 'x' , x) 

# max period for distinct minutes 
head(dbGetQuery(db , "SELECT entrytime , MAX(period) FROM x GROUP BY entrytime")) 

# max period for 15 minute intervals 
head(dbGetQuery(db , "SELECT intervals , MAX(period) FROM x GROUP BY intervals")) 

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

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