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

Ekspresi kueri Django untuk bidang terhitung yang memerlukan kondisi dan casting

Gunakan ekspresi kondisional :

from django.db.models import Case, F, Sum, When

Stats.objects.values('product').annotate(
    tot_impressions=Sum('impressions'), 
    tot_clicks=Sum('clicks')
).annotate(
    ctr=Case(When(tot_impressions=0, then=None),  # or other value, e.g. then=0
             # 1.0*... is to get float in SQL
             default=1.0*F('tot_clicks')/F('tot_impressions'),
             output_field=models.FloatField())
).order_by('ctr')


  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:Batasan dengan centang hanya pada INSERT

  2. Dapatkan satu-satunya data terbaru dari minggu lalu dan jumlahkan beberapa kolom

  3. Memantau PostgreSQL di Lingkungan Hibrida

  4. Bagaimana cara UPDATE kolom secara efisien dalam tabel PostgreSQL besar menggunakan Python / psycopg2?

  5. Cara mengembalikan baris sampel dari database satu per satu