1

我有一个数据库,包括表单的“日期”字段,例如“2012-06-13 23:34:52+00”和“情绪”字段,包括-1和1之间的双符号值。我想要什么是计算平均情绪,按一天中的每个小时分组。例如,我希望得到下表:

小时......平均情绪   
00 ...... 0.5  
01 .... -0.2  
...  
24 ...... 0.7  

我想我必须使用 group by、avg 函数和一些通配符来从“Date”中提取小时。如果有人更有经验,请帮助我找到最有效的查询方式。

谢谢你。

4

2 回答 2

1

如果我知道您的 DBMS,答案应该会更好。<functionToGetHour>将取决于您的 DBMS。

AVG 是(如果我没记错的话)ANSI SQL。

这个想法是这样的。

如果你想要每个小时的结果,即使那个小时没有“情绪”,这是可能的,但有点复杂。

SELECT t1.<functionToGetHour>(Date), AVG(t1.Sentiment)
FROM <YOURTABLE> t1
GROUP BY t1.<functionToGetHour>(Date)

编辑

使用 Google API(如果我们谈论的是https://developers.google.com/chart/interactive/docs/querylanguage?hl=fr

select hour(datetime  `Date`), avg(sentiment) group by hour(datetime  `Date`)

date 是保留关键字,因此将其用作字段是一个相当糟糕的主意。不知道 google API 是否区分大小写...

于 2012-06-27T11:56:15.487 回答
0
select to_char(date_field, 'YYYY MM DD HH'), average(sentiment) # to_char= oracle
from sentimemt_table
group by to_char(date_field, 'YYYY MM DD HH')

# mySQL: DATE_FORMAT(date_field, '%Y %M %D %H') instead of to_char
# Postgres: to_char(date_field, 'YYYY:MM:DD:HH24')
# SQLServer: CONVERT(VARCHAR(20), date_field(), 120)
于 2012-06-27T11:55:27.323 回答