あなたはGROUP BY
を探しています。 1つのポジションだけでなく各ポジションの平均価格を取得するには、ここで行うことがあります。
SELECT position, AVG(price) average
FROM products
GROUP BY position
あなたの質問には2シグマの除外があります。あなたはそれぞれの位置の限界を得るために同じテクニックを使用する必要があります。各ポジションの平均+2シグマ制限を計算する場合は、このサブクエリが必要です。 (注:それはむしろ、算術演算子の優先順位を信頼するよりも、SQLのような言語では括弧を使用するのがベストです。)あなたはそのように
SELECT a.position, a.price
FROM products
JOIN (
SELECT position,
AVG(price) + (2.0 * STDDEV(price)) upper_limit
FROM products
GROUP BY position
) b ON a.position = b.position
AND a.price < b.upper_limit
のように選択し、あなたのトップレベルにそのクエリに参加することができます
SELECT position,
AVG(price) + (2.0 * STDDEV(price)) upper_limit
FROM products
GROUP BY position
これにより、外れ値を除いたポジション/価格の生データが得られます。 ON
句は、メインとサブクエリの行の位置がどのように一致するかを確認してから、ロー価格がupper_limit
を超えるローを除外しますか?それはトリックです。
次に、そのデータを通常のGROUP BY
に集約できます。それは構造化クエリ言語と呼ばれる理由
SELECT a.position, AVG(a.price) average
FROM products
JOIN (
SELECT position,
AVG(price) + (2.0 * STDDEV(price)) upper_limit
FROM products
GROUP BY position
) b ON a.position = b.position
AND a.price < b.upper_limit
GROUP BY a.position
クエリ内のサブクエリのこのレイヤーです。
http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- sql-query – Strawberry
-1の評価はなぜですか? – Louisa
下向き矢印にカーソルを合わせる – Strawberry