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

Rails Postgresクエリ、関連付けのあるすべての検索パラメータに表示されるアイテムのみを選択

    毎年どのような項目が記録されているかを確認できます。これを行うには、すべてのアイテムの個別の年数が合計年数と等しいかどうかを確認します( COUNT DISTINCT を使用) ):

     number_years = params[:end_year].to_i - params[:start_year].to_i + 1
     @sale_averages = Sale.joins(:shops, :items)
                          .select('items.name, AVG(sale.price) as price')
                          .where("EXTRACT(year from season_year) BETWEEN #{params[:start_year]} AND #{params[:end_year]}")
                          .where('shops.name': params[:select_shop])
                          .group('items.name')
                          .having("(COUNT(DISTINCT(EXTRACT(year from season_year))) = #{number_years})")
    

    BETWEENも使用しました <の代わりに および> 。(元のクエリのように)ショップではなくアイテム名でグループ化したいと思います。




    1. MYSQLのより高いLIMITオフセットがクエリを遅くするのはなぜですか?

    2. 単純なストアドプロシージャを使用すると、MySQLエラー#1312が発生するのはなぜですか?

    3. MySQL Workbench:クエリのエラー(1064):1行目の「VISIBLE」付近の構文エラー

    4. MySQLクイックヒント:DAYOFWEEK関数の使用