PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Dengan Rails, bagaimana saya bisa menanyakan db untuk jumlah agregat dan dikelompokkan berdasarkan minggu?

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

Akan menghasilkan hasil seperti

{[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}

di mana kuncinya adalah [tahun, minggu], maka Anda dapat menggunakan Date.commercial untuk mendapatkan minggu

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

Dan (karena saya bisa), versi mysql dari kueri terlihat seperti ini

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

Ini secara default mengasumsikan minggu dimulai pada hari Senin, dan minggu pertama dalam setahun dimulai pada hari Senin pertama dalam setahun



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tampilan Terwujud PostgreSQL

  2. Apa cara yang paling direkomendasikan untuk menyimpan waktu di PostgreSQL menggunakan Java?

  3. Ikhtisar Alat Penjadwalan Pekerjaan untuk PostgreSQL

  4. koneksi heroku db ditolak

  5. Cara membagi baris menjadi banyak baris di postgresql