PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zapytanie Rails Postgres, wybierające tylko elementy, które pojawiają się we wszystkich parametrach wyszukiwania z asocjacjami

Możesz sprawdzić, na jakie pozycje istnieje rekord każdego roku. Możesz to zrobić, sprawdzając, czy liczba odrębnych lat dla każdego elementu jest równa sumie lat (za pomocą 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})")

Użyłem również BETWEEN zamiast < i > .Myślę, że chcesz pogrupować według nazwy przedmiotu zamiast sklepu (jak to było w pierwotnym zapytaniu).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ustawienia Django konfigurują bazy danych z dwoma silnikami

  2. Zezwól na wartość null w unikalnej kolumnie

  3. Błąd PostgreSQL:program nie może się uruchomić, ponieważ na komputerze brakuje libpq.dll

  4. Jak uzyskać informacje o planie zapytań z Postgres do JDBC?

  5. Zmień kolejność kolumn w tabeli postgres