0

次のような SQL クエリがあります。

SELECT position, AVG(price) FROM products WHERE position IS NOT NULL
AND price < (SELECT AVG(price)+2*STDDEV(price) FROM price)
AND position = 3

一度に 1 つの位置だけを確認したい場合は便利ですが、かなりの数の位置があるため、すべての位置のデータを同時に取得したいと考えています。

つまり、次のようなものです:

[QUERY]... GROUP BY position

しかし、内部クエリと外部クエリの両方で位置によってグループ化するにはどうすればよいので、内部クエリの where 句は正しい位置に一致する値を返します。

ありがとう。

4

2 に答える 2

0

追加しても目的がGROUP BY達成されませんか?

SELECT position, AVG(price)
FROM products p
WHERE position IS NOT NULL AND
      price < (SELECT AVG(price)+2*STDDEV(price)
               FROM price p2
              ) 
GROUP BY position;

または、気になる特定の製品はありますか?その場合は、相関サブクエリが必要です。

SELECT position, AVG(price)
FROM products p
WHERE position IS NOT NULL AND
      price < (SELECT AVG(price)+2*STDDEV(price)
               FROM price p2
               WHERE p.? = p2.?
              ) 
GROUP BY position;

相関にどの列を使用する必要があるかは不明です。

于 2017-01-06T12:11:55.010 に答える