1

これは私の MySQL テーブルfeedbackです。

Mysql テーブル

averagePHPファイルを使用して、すべての列の平均を計算し、結果を以下の構造のテーブルに保存したいと思います。

ここに画像の説明を入力

クエリSELECT AVG (waiting) FROM feedbackを使用して待機列の平均を計算しています。しかし、このクエリ結果を上記の構造として別のテーブルに配置する方法はわかりません。

クエリを使用する場合INSERT INTO average (average) SELECT AVG (waiting) FROM feedback** 平均列のみを更新します。

サンプルコードを教えてください。

ありがとう

4

3 に答える 3

1

あなたが正しく理解しているなら、あなたはこのようにすることができます

INSERT INTO average (data, average)
SELECT 'waiting',      AVG (waiting)      FROM feedback UNION ALL
SELECT 'consultation', AVG (consultation) FROM feedback UNION ALL
SELECT 'preoperative', AVG (preoperative) FROM feedback 

出力例:

| | データ | 平均 |
--------------------------
| | 待っている | 3 |
| | 相談 | 2 |
| | 術前 | 3 |

これがSQLFiddleのデモです


テーブルに大量のデータがない場合は、feedbackテーブルを破棄averageして同じ方法でビューを作成できます。その結果、平均のテーブルを維持する代わりに、選択したときにオンザフライで計算されます

CREATE VIEW average AS 
SELECT 'waiting',   ROUND(AVG (waiting)) average FROM feedback UNION ALL
SELECT 'consultation', ROUND(AVG (consultation)) FROM feedback UNION ALL
SELECT 'preoperative', ROUND(AVG (preoperative)) FROM feedback

そしてそれを使う

SELECT * FROM average

これがSQLFiddleのデモです

于 2013-08-01T21:36:44.293 に答える
0

これら 3 つの列の平均値を取得するには、次のようにします。

SELECT AVG(waiting),AVG(consultation),AVG(preoperative) FROM feedback;

列名が同じ場合、平均テーブルに挿入するには:

INSERT INTO average(waiting,consultation,preoperative) 
SELECT AVG(waiting),AVG(consultation),AVG(preoperative) FROM feedback
于 2013-08-01T21:41:39.767 に答える
0

各列の平均から結果を取得し、それを別のデータベースに挿入できます。

あなたが今していることは、別のデータベースではなく、同じデータベースの同じ列に挿入します。そのため、別の列ではなく、その列を更新するだけです。

INSERT クエリの例:

$query = "INSERT INTO tableName (columnName) VALUES ($averageOfColumn)";

'tableName' を接続先の新しいテーブルの名前に置き換えます。

'columnName' を、使用している他のデータベースの列の名前に置き換えます。

'$averageOfColumn' を、待機列の平均の変数に置き換えます。

これは役に立ちますか?

于 2013-08-01T21:30:08.803 に答える