1

「2012-06-1323:34:52 + 00」などの形式の「日付」フィールドと、-1から1までの二重符号値を含む「感情」フィールドを含むデータベースがあります。 1日の各時間でグループ化された平均感情を計算することです。たとえば、結果として次の表が必要です。

時間......平均的な感情   
00 ......... 0.5  
01 ......... -0.2  
..。  
24 ......... 0.7  

「Date」から時間を抽出するには、group by、avg関数、およびおそらくいくつかのワイルドカードを使用する必要があると思います。誰かがより経験豊富な場合は、これを照会する最も効率的な方法を見つけるのを手伝ってください。

ありがとうございました。

4

2 に答える 2

1

私があなたのDBMSを知っていれば、答えはもっと良いはずです。<functionToGetHour>あなたのDBMSに依存します。

AVGは(私が間違っていなければ)ANSISQLです。

アイデアはそのようなものです。

その時間に「感情」がなくても、1時間ごとに結果が必要な場合は、それは可能ですが、もう少し複雑です。

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は予約済みのキーワードなので、フィールドとして使用するのはかなり悪い考えです。GoogleAPIで大文字と小文字が区別されるかどうかはわかりません...

于 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 に答える