STDEV()は集約関数です。それは多くの行から値をとり、単一の結果をもたらします。
SELECT
name,
STDEV(t1) standard_deviation_of_t1,
STDEV(t2) standard_deviation_of_t2,
STDEV(t3) standard_deviation_of_t3
FROM
yourTable
GROUP BY
name
-- This will give meaningful results if there are several records for the
-- same name.
残念ながら、いくつかのフィールドから値を取りません。ただ、いくつかの行は、
SELECT
name,
STDEV(t) standard_deviation_of_all_t_values,
FROM
(
SELECT name, t1 AS t FROM yourTable
UNION ALL
SELECT name, t2 AS t FROM yourTable
UNION ALL
SELECT name, t3 as t FROM yourTable
)
AS data
GROUP BY
name
EDIT
別のオプション...あなたは、単一の列のすべての値を持つようにあなたのデータを再作業する必要があることを行うには、代わりのUNION ALL
がある可能性があります。 ..
SELECT
name,
STDEV(CASE map.field_id WHEN 1 THEN t1 WHEN 2 THEN t2 ELSE t3 END)
FROM
your_table
CROSS JOIN
(SELECT 1 as field_id UNION ALL SELECT 2 UNION ALL SELECT 3) AS map
GROUP BY
name
+1 MySQLで動作させることができませんでした。私が見る限り、派生テーブルの外側の列への参照を許可していないようです。 –
@ demあなたはそれをシンプルにすることができますか?全く?それは動作しますが、編集のために – Merlin
@Merlin - 私は代替案を投稿しました。しかし、それは '作品ではあるが編集のためにはどういう意味ですか? – MatBailie