sql >> データベース >  >> RDS >> Database

集計関数AVGを使用してレコードをフィルタリングする方法

    問題:

    列の値の平均が特定の値よりも高いまたは低い行のグループを検索する必要があります。

    例:

    データベースには、product 次の列にデータがあります:idnamegrocery およびprice

    id 名前 食料品 価格
    1 ミルク グリーンショップ 2.34
    2 パン クラークの食料品 3.56
    3 パン スーパーマーケット 4.15
    4 ミルク スーパーマーケット 1.80
    5 パン 食料品店アマンダ 2.26
    6 ミルク バイオレット食料品 3.45
    7 ミルク クラークの食料品 2.10
    8 パン バイオレット食料品 2.55
    9 ミルク 食料品店アマンダ 1.95

    食料品の各商品の平均価格が3.00を超える商品の名前を見つけましょう。

    解決策:

    SELECT name, AVG(price)
    FROM product
    GROUP BY name
    HAVING AVG(price)>3.00;
    

    結果は次のとおりです。

    name avg
    パン 3.13

    ディスカッション:

    集計関数を使用してレコードをフィルタリングするには、HAVING句を使用します。

    ここでは、集計値、つまり各製品の平均価格を計算します。 1つは複数の食料雑貨店で販売されています。したがって、平均価格はそれぞれについて計算されます(この例では、SELECT name, AVG(price) )。集計関数のほかに、SELECTで列名も使用するため、この列名(GROUP BY name)でGROUPBYを使用する必要があります。 )。

    最後のステップは、HAVING句で集計関数を使用することです。 HAVINGはGROUPBY句の後に置く必要があることに注意してください。これには、集計関数によって返される値を指定された値と比較する条件が含まれています。上記は、値が3.00の製品の平均価格です(HAVING AVG(price)>3.00 )。このクエリでは、すべての食料品の各製品の平均価格が3より高いかどうかを確認します。クエリには、平均価格が3を超えるパンという1つの製品のみが表示されました。


    1. 給与表から3番目またはnᵗʰの最大給与を見つける方法は?

    2. SQLServerへの接続の確立中にネットワーク関連またはインスタンス固有のエラーが発生しました

    3. OLE DBソースコンポーネントのストアドプロシージャパラメータに値を渡すにはどうすればよいですか?

    4. 新しいPostgreSQLJSONデータ型内のフィールドを使用してクエリを実行するにはどうすればよいですか?