sql >> Databasteknik >  >> RDS >> PostgreSQL

Rent sätt att använda postgresql-fönsterfunktioner i django ORM?

Sedan Django 2.0 är det inbyggt i ORM. Se fönsterfunktioner

# models.py
class GameScore(models.Model):
     user_id = models.IntegerField()
     score = models.IntegerField()

# window function usage
from django.db.models.expressions import Window
from django.db.models.functions import Rank

GameScore.objects.annotate(rank=Window(
    expression=Rank(),
    order_by=F('score').desc(),
    partition_by=[F('user_id')]))

# generated sql
SELECT "myapp_gamescore"."id",
   "myapp_gamescore"."user_id",
   "myapp_gamescore"."score",
   RANK() OVER (
     PARTITION BY "myapp_gamescore"."user_id"
     ORDER BY "myapp_gamescore"."score" DESC
   ) AS "rank"
FROM "myapp_gamescore"


  1. Hur man ansluter till SQL Server Default Instance och SQL Server Named Instances - SQL Server / TSQL självstudie del 2

  2. Hämta utdata från dbms_output.get_lines med JDBC

  3. SQL inte lika med (!=) Operator för nybörjare

  4. Gruppering registrerar timme för timme eller dag för dag och fyller luckor med noll eller noll