あなたが正しく理解しているなら、あなたはこのようにすることができます
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のデモです