sql >> データベース >  >> RDS >> PostgreSQL

条件とキャストを必要とする計算フィールドのDjangoクエリ式

    条件式 を使用します :

    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. 複数のフィールドによるMySQLの一意のインデックス

    2. PythonMySQLdbエラー-これを引き起こしているもの

    3. MySQLデータベース開発のためのGearHost入門

    4. regexp_matchesの結果から2番目の一致を取得します