PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Rails truy vấn Postgres, chỉ chọn các mục xuất hiện trong tất cả các thông số tìm kiếm có liên kết

Bạn có thể kiểm tra những mục nào có hồ sơ hàng năm. Bạn có thể làm điều đó bằng cách kiểm tra xem số năm riêng biệt cho mỗi mục có bằng tổng số năm hay không (sử dụng 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})")

Tôi cũng đã sử dụng BETWEEN thay vì <> . Tôi nghĩ bạn muốn nhóm theo tên mặt hàng thay vì cửa hàng (như trong truy vấn ban đầu của bạn).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn thời gian với tiết kiệm ánh sáng ban ngày của múi giờ

  2. Tạo kết xuất Postgres và lưu vào một máy chủ khác

  3. Làm cách nào để nhập tệp JSON vào PostgreSQL?

  4. Nối hai bảng trong một truy vấn phức tạp (không phải dữ liệu thống nhất)

  5. Chuẩn hóa các chỉ số con của mảng cho mảng 1 chiều để chúng bắt đầu bằng 1