0

私はすべてを見てきましたが、明確な解決策を見つけることができないようです。見逃していたらごめんなさい。

私の問題: 1 時間ごとに蓄積され、table1 に配置されたデータがあります。table2.metric_ に、その日の table1.metric_ の平均を含めたいと思います。

table1 : record_key_、id_、metric_、date_

table2 : record_key_、id_、metric_、date_

私が使用する日のレコードのリストを取得するには: SELECT * FROM table1 t WHERE t.date_ >= DATE_SUB(NOW(),INTERVAL 1 DAY) WHERE t.id_='id1';

table2.metric_ が、前の SELECT ステートメントによって返された table1 の id1 のすべてのレコードの table1.metric_ 列の値の平均になるように、table2 の INSERT クエリはどのようになりますか?

4

2 に答える 2

1
insert into table2 SELECT avg(total) FROM (SELECT count(*) as Total FROM table1 t WHERE t.col= DATE_SUB(NOW(),INTERVAL 1 DAY) group by colname) as a
于 2012-07-16T07:15:25.007 に答える
0
INSERT INTO table2 metric_
       SELECT AVG(t.metric_) FROM table1 t WHERE t.date_ >= DATE_SUB(NOW(),INTERVAL 1 DAY) WHERE t.id_='id1');

解決策になるはずですSELECTステートメントで好きなようにフォーマットされたdate_を追加できます

MySQLテストデータベースがないため、クエリをテストしませんでした。

出典:MySQLリファレンスのINSERT-SELECT

(受け入れられた回答についてコメントすることはできませんが、間違いだと確信しています。エントリの数をカウントし、平均を計算します(1日は何時間ですか?)

于 2012-07-16T07:20:29.720 に答える