1

基準を満たすフィールドの平均量を見つけたいです。大きなテーブルに埋め込まれていますが、この平均フィールドを別のテーブルではなくそこに入れたいと思います。

これは私がこれまでに持っているものです:

Select....
Avg( (currbal) where (select * from table 
                       where ament2 in ('r1','r2'))
From table 
4

3 に答える 3

2

case when ... thennull は avg() によって無視されるため、クエリのサブセットのみを AVG する場合は、一致しない行の値を null に置き換えるために使用します。

Select id,
       sum(something) SomethingSummed,
       avg(case when ament2 in ('r1','r2') then currbal end) CurrbalAveragedForR1R2
  From [table]
 group by id
于 2012-09-19T13:55:30.210 に答える
1

選択リストに完全な副選択を書き込むことができます。

SELECT ...,
       (SELECT AVG(Currbal) FROM Table WHERE ament2 IN ('r1', 'r2')) AS avg_currbal,
       ...
  FROM ...

それがあなたが望むことを正確に行うかどうかは、多くのことに依存します。それを相関サブクエリにする必要があるかもしれません。「ament2」がテーブルにあると仮定すると、現時点では相関サブクエリではありません。

于 2012-09-19T13:51:29.170 に答える
1

AVG内のテーブル参照内で、ステートメントに埋め込みたい他のすべての合計を入れることができます。FROM何かのようなもの:

SELECT AVG(currbal)
FROM
(
    SELECT * -- other sums
    FROM table
    WHERE ament2 IN ('r1','r2')
) t
于 2012-09-19T13:49:58.757 に答える