1

次のようなデータセットがあるとします。

╔═════════╦════════╦════════╗
║ FIELD1  ║ FIELD2 ║ FIELD3 ║
╠═════════╬════════╬════════╣
║ 11-1.01 ║ Jacob  ║      3 ║
║ 11-1.02 ║ Jacob  ║      4 ║
║ 12-2.01 ║ Jacob  ║      3 ║
║ 13-3.01 ║ Jacob  ║      4 ║
║ 13-3.02 ║ Jacob  ║      3 ║
║ 13-3.03 ║ Jacob  ║      2 ║
║ 11-1.01 ║ Chris  ║      3 ║
║ 11-1.02 ║ Chris  ║      4 ║
║ 12-2.01 ║ Chris  ║      2 ║
║ 13-3.01 ║ Chris  ║      4 ║
║ 13-3.02 ║ Chris  ║      3 ║
║ 13-3.03 ║ Chris  ║      2 ║
║ 11-1.01 ║ Mike   ║      4 ║
║ 11-1.02 ║ Mike   ║      3 ║
╚═════════╩════════╩════════╝

一意の Field2 要素ごとに、Field1 の繰り返し前の 10 進数値 (10 進数の後の値は重要ではありません) の Field3 値の平均を見つける必要があります。Field1 の値は、タイプ CHAR および 7 桁の長さ (ハイフンと 10 進数を含む) として定義されます。

現在、WHERE 句を使用して特定の Field2 要素の平均を見つけることができます。

SELECT prefix, COUNT(prefix), Field2, FORMAT(AVG(suffix),2)
FROM
(
  SELECT LEFT(Field1,4) AS prefix, Field3 AS suffix, Field2
  FROM mytable WHERE Field2 = 'Jacob'
)x
GROUP BY prefix;

ただし、ファイル全体を実行して、異なる Field2 要素ごとに平均値を求めることが私の目標であるため、一意の Field2 名があるほど何度もプログラムを実行する必要はありません。これは現在のコードをかなり簡単に変更できるはずですが、どうすればよいかわかりません。このデータをテーブルに構造化するためのより良い方法がおそらくありますが、これは私が受け取った方法であり、それを使用する必要があります (私はそれについてあまり知りません)。

更新 1

望ましい結果

╔════════╦═════════════╦════════╦═════════╗
║ PREFIX ║ PREFIXCOUNT ║ FIELD2 ║ AVERAGE ║
╠════════╬═════════════╬════════╬═════════╣
║ 11-1   ║           2 ║ Chris  ║ 3.50    ║
║ 12-2   ║           1 ║ Chris  ║ 2.00    ║
║ 13-3   ║           3 ║ Chris  ║ 3.00    ║
║ 11-1   ║           2 ║ Jacob  ║ 3.50    ║
║ 12-2   ║           1 ║ Jacob  ║ 3.00    ║
║ 13-3   ║           3 ║ Jacob  ║ 3.00    ║
║ 11-1   ║           2 ║ Mike   ║ 3.50    ║
╚════════╩═════════════╩════════╩═════════╝
4

1 に答える 1

2

whereサブクエリの句を削除し、および でグループ化prefixしますField2

SELECT  prefix, 
        COUNT(prefix) PrefixCount, 
        Field2, 
        FORMAT(AVG(suffix),2) Average
FROM
        (
          SELECT    LEFT(Field1,4) AS prefix, 
                    Field3 AS suffix, 
                    Field2
          FROM      TableName 
        )   x
GROUP   BY prefix, Field2
ORDER   BY Field2, prefix

出力、

+--------+-------------+--------+---------+
| PREFIX | PREFIXCOUNT | FIELD2 | AVERAGE |
+--------+-------------+--------+---------+
| 11-1   |           2 | Chris  | 3.50    |
| 12-2   |           1 | Chris  | 2.00    |
| 13-3   |           3 | Chris  | 3.00    |
| 11-1   |           2 | Jacob  | 3.50    |
| 12-2   |           1 | Jacob  | 3.00    |
| 13-3   |           3 | Jacob  | 3.00    |
| 11-1   |           2 | Mike   | 3.50    |
+--------+-------------+--------+---------+
于 2013-02-10T05:23:42.433 に答える