2012-06-27 54 views
1

我有一個數據庫,包括形式的字段「日期」,例如, 「2012-06-13 23:34:52 + 00」和「Sentiment」字段,包括-1和1之間的雙重有符號值。我想要計算的是每天每小時分組的平均情緒。例如,我想下面的表格有結果:Sql按日期分組,然後找到平均值

 
Hour......Average Sentiment 
00 ......... 0.5 
01 ......... -0.2 
... 
24 ......... 0.7 

我想我得通過,AVG的功能,可能有一些通配符使用組來提取「日期」小時。如果有人更有經驗,請幫助我找到查詢這種最有效的方法。

謝謝。

+0

你的dbms(mysql,sql server ...)的名字會有所幫助。日期字段的類型也是。 –

+0

我目前在Google Docs上以電子表格的形式顯示此內容,並計劃使用Google js API查詢它。 「數據」字段是文本格式。謝謝。 –

+0

對不起,不知道Google電子表格應該用作db,而Google js API是用作「SQL語言」。然後看到我的編輯。 –

回答

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) 
1

如果我知道你的數據庫管理系統,答案應該會更好。 <functionToGetHour>將取決於您的DBMS。

AVG是(如果我沒有錯)ANSI SQL。

這個想法就是這樣的。

如果您想要每小時都有結果,即使該小時沒有「情感」,也是可能的,但有點複雜。

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

編輯

與谷歌API(如果我們談論https://developers.google.com/chart/interactive/docs/querylanguage?hl=fr

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

日期是一個保​​留關鍵字,所以這是一個相當糟糕的主意,用它作爲領域。不知道是谷歌API區分大小寫...