0

2 つの列 (整数データ、時間) を含むテーブルにエントリがあります。時間は TEXT に格納され、標準形式の 1 つである HH:MM 形式です ( sqllite のドキュメントによると)。「integerdata」は整数です。時間ごとに整数データを AVG(integerdata) として、時間ごとにグループ化された行の内容を取得しようとしています。例: 行:

(10, 10:01)
(2, 10:25)
(5, 11:01)
(9, 11:25)

次のような出力が必要です。

6, 10:00 
7, 11:00

初心者で恐ろしい方法の 1 つは、時間範囲ごとにクエリを実行することです (24 回のクエリを実行します)。何かのようなもの:

SELECT AVG(integerdata) from table WHERE time BETWEEN 'time1' AND 'time2'
//time1 and time2 can vary between 10:00 to 11:00; then 11:00 to 12:00 ...

2番目の方法はGROUP BY句を使用することかもしれませんが、方法がわかりません。私はグーグルで検索し、stackoverflowでいくつかの回答を見ようとしましたが、役に立ちませんでした. 貢献していただければ幸いです。ありがとう!

4

1 に答える 1

2

時間ごとに整数データを AVG(integerdata) として、時間ごとにグループ化された行の内容を取得しようとしています。

これが私の最初のアイデアです。あなたの時間はまだなので、関数をTEXT使用substr()して時間列から時間のみを取得し、この部分文字列を GROUP BY節で使用できます。

Select AVG(integerdata), SUBSTR(time, 0, 3) as gt from Table group by gt;

あなたの時間形式はHH:MMそうであると思います。この場合SUBSTR(time, 0, 3)、時間のみを返し、時間ごとのグループ化を開始できます。

戻り値: 10, 11, 12, ...

于 2013-04-05T22:50:40.947 に答える