PostgreSQL
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво не е наред с тази заявка за postgreSQL?

  2. Групиране на Postgres по заявка

  3. Spring Boot data-jpa и nativeQuery Postgres cast

  4. Недефиниран метод auto_upgrade! когато натискате приложението Sinatra/DataMapper към Heroku

  5. ГРЕШКА:Индексът на колоната е извън обхват:1, брой колони:0