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

Với Rails, làm cách nào để tôi có thể truy vấn db để biết số tổng hợp và được nhóm lại theo tuần?

points_by_week = Log.where(user_id: user_id).group("DATE_TRUNC('year', created_at)", "DATE_TRUNC('week', created_at)").sum(:points)

Sẽ mang lại kết quả như

{[2014, 4]=>3,
 [2014, 8]=>7,
 [2015, 4]=>26,
 [2015, 6]=>19,
 [2015, 12]=>50,
 [2015, 32]=>48,
 [2016, 2]=>78,
 [2016, 3]=>45,
 [2016, 4]=>49,
 [2016, 5]=>110,
 [2016, 45]=>30,
 [2017, 4]=>130,
 [2017, 11]=>185}

trong đó khóa là [năm, tuần], thì bạn có thể sử dụng Date.commercial để lấy tuần

points_by_week.each do |(year, week), count|
  date = Date.commercial(year, week)
  puts "Week of #{date.strftime('%d/%m/%Y')} - #{count} total points"
end

Và (chỉ vì tôi có thể), phiên bản mysql của truy vấn trông như thế này

points_by_week = Log.where(user_id: user_id).group("year(created_at)", "week(created_at)").sum(:points)

Điều này theo mặc định giả sử tuần bắt đầu vào Thứ Hai và tuần đầu tiên của năm bắt đầu vào Thứ Hai đầu tiên của năm



  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 được xây dựng trong lệnh COPY với Truy vấn được tham số hóa

  2. Cách xây dựng lại một PostgreSQL Slave không nhất quán

  3. Sử dụng sao băng với postgresql

  4. Làm thế nào để lấy danh sách các hàm trong cơ sở dữ liệu trong PostgreSQL cùng với các tham số của nó?

  5. chuỗi postgresql nextval trong giản đồ