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

Pengelompokan baris per jam menggunakan Django

Untuk memperbaikinya, tambahkan order_by() ke rantai kueri. Ini akan mengganti urutan model Meta default . Seperti ini:

Test
.objects
.extra({'hour': 'strftime("%%H", created_on)'})
.order_by()                                        #<------ here
.values('hour')
.annotate(count=Count('id'))

Di lingkungan saya ( Postgres juga ):

>>> print ( Material
         .objects
         .extra({'hour': 'strftime("%%H", data_creacio)'})
         .order_by()
         .values('hour')
         .annotate(count=Count('id'))
         .query )

  SELECT (strftime("%H", data_creacio)) AS "hour", 
         COUNT("material_material"."id") AS "count" 
    FROM "material_material" 
GROUP BY (strftime("%H", data_creacio))

Pelajari lebih lanjut di order_by django docs :

Catatan samping :menggunakan extra() dapat memperkenalkan kerentanan injeksi SQL ke kode Anda. Gunakan ini dengan hati-hati dan hindari parameter apa pun yang dapat diperkenalkan pengguna. Bandingkan dengan dokumen :




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres:bagaimana Anda membulatkan stempel waktu ke atas atau ke bawah ke menit terdekat?

  2. Membuat emacs untuk menyorot sintaks postgresql secara default

  3. Setelah mengimpor data di PostgreSQL, nilai kunci duplikat melanggar batasan unik

  4. Memuat file CSV (nama file.csv.gz) zip ke tabel PostgreSQL

  5. Memuat data CSV ke tabel PostgreSQL