1

次のようなテーブルからビューを作成したいと思います。

Configuration |   Size  | Runtime    
0             |    10   |  32.5    
1             |    10   |  30.8   
2             |    10   |  40.1    
0             |    20   |  61.0   
1             |    20   |  65.3   
2             |    20   |  56.8

構成番号 0 は特別 (デフォルト構成) であり、「サイズ」値のすべてのグループに存在します。私の目標は、次のようなビューを作成することです。

Configuration |   Size  | Speedup
0             |    10   |  1.0
1             |    10   |  1.05
2             |    10   |  0.81
0             |    20   |  1.0
1             |    20   |  0.93
2             |    20   |  1.07

同じサイズの行のグループごとに、デフォルトの構成 (番号 0 で識別) を見つけて、考慮される行の実行時間とデフォルトの実行時間の比率を計算したいと思います。

これは、次の 2 つのクエリに分割できます。

  1. 指定された「サイズ」のデフォルトのランタイムを探します
  2. ランタイムとデフォルトの比率を実行します。

問題は、クエリ番号 1 (クエリ 2 の select ステートメントのサブクエリである必要があります) で、現在検討している「サイズ」がわからないことです。私の言いたいことを理解していただければ幸いです。

この問題を回避する方法はありますか?

4

2 に答える 2

2
SELECT Configuration, Size, default.Runtime / t.Runtime AS Speedup FROM t JOIN (
  SELECT Size, Runtime FROM t WHERE Configuration = 0
) `default` USING (Size)

sqlfiddleで参照してください。

于 2012-07-08T11:58:10.487 に答える
2

使用できる別のアプローチは、サブセレクトです。

CREATE VIEW yourview AS
SELECT
    Configuration,
    Size,
    (SELECT Runtime
     FROM yourtable AS T2
     WHERE T1.Size = T2.Size
     AND T2.Configuration = 0) / Runtime AS SpeedUp
FROM yourtable AS T1

オンラインで動作することを確認してください: sqlfiddle

于 2012-07-08T11:59:11.363 に答える