Fungsi pengumpulan khusus PostgreSQL

Fungsi-fungsi ini digambarkan lebih rinci di PostgreSQL docs.

Catatan

Semua fungsi-fungsi tanpa nama lain awalan, jadi anda harus jelas menyediakan satu. Sebagai contoh:

>>> SomeModel.objects.aggregate(arr=ArrayAgg('somefield'))
{'arr': [0, 1, 2]}

Fungsi pengumpulan tujuan-umum

ArrayAgg

class ArrayAgg(expression, **extra)[sumber]

Mengembalikan daftar nilai, termasuk null, disambungkan kedalam larik.

BitAnd

class BitAnd(expression, **extra)[sumber]

Mengembalikan sebuah int dari bitwise AND dari semua nilai-nilai masukan bukan-null, atau None jika semua nilai-nilai adalah null.

BitOr

class BitOr(expression, **extra)[sumber]

Mengembalikan sebuah int dari bitwise OR dari semua nilai-nilai masukan bukan-null, atau None jika semua nilai-nilai adalah null.

BoolAnd

class BoolAnd(expression, **extra)[sumber]

Mengembalikan True, jika semua nilai-nilai masukan adalah true, None jika semua nilai-nilai adalah null jika tidak ada nilai, jika tidak False.

BoolOr

class BoolOr(expression, **extra)[sumber]

Mengembalikan True, jika setidaknya satu nilai masukan adalah true, None jika semua nilai-nilai adalah null atau, j jika tidak ada nilai, jika tidak False.

StringAgg

class StringAgg(expression, delimiter)[sumber]

Mengembalikan nilai-nilai masukan digabungkan kedalam string, dipisah berdasarkan string delimiter

delimiter

Diwajibkan argumen. Butuh berupa sebuah string.

Fungsi-fungsi pengumpulan untuk statistik

y dan x

The arguments y and x for all these functions can be the name of a field or an expression returning a numeric data. Both are required.

Corr

class Corr(y, x)[sumber]

Returns the correlation coefficient as a float, or None if there aren’t any matching rows.

CovarPop

class CovarPop(y, x, sample=False)[sumber]

Returns the population covariance as a float, or None if there aren’t any matching rows.

Mempunyai satu argumen pilihan:

sample

By default CovarPop returns the general population covariance. However, if sample=True, the return value will be the sample population covariance.

RegrAvgX

class RegrAvgX(y, x)[sumber]

Returns the average of the independent variable (sum(x)/N) as a float, or None if there aren’t any matching rows.

RegrAvgY

class RegrAvgY(y, x)[sumber]

Returns the average of the dependent variable (sum(y)/N) as a float, or None if there aren’t any matching rows.

RegrCount

class RegrCount(y, x)[sumber]

Returns an int of the number of input rows in which both expressions are not null.

RegrIntercept

class RegrIntercept(y, x)[sumber]

Returns the y-intercept of the least-squares-fit linear equation determined by the (x, y) pairs as a float, or None if there aren’t any matching rows.

RegrR2

class RegrR2(y, x)[sumber]

Returns the square of the correlation coefficient as a float, or None if there aren’t any matching rows.

RegrSlope

class RegrSlope(y, x)[sumber]

Returns the slope of the least-squares-fit linear equation determined by the (x, y) pairs as a float, or None if there aren’t any matching rows.

RegrSXX

class RegrSXX(y, x)[sumber]

Returns sum(x^2) - sum(x)^2/N (“sum of squares” of the independent variable) as a float, or None if there aren’t any matching rows.

RegrSXY

class RegrSXY(y, x)[sumber]

Returns sum(x*y) - sum(x) * sum(y)/N (“sum of products” of independent times dependent variable) as a float, or None if there aren’t any matching rows.

RegrSYY

class RegrSYY(y, x)[sumber]

Returns sum(y^2) - sum(y)^2/N (“sum of squares” of the dependent variable) as a float, or None if there aren’t any matching rows.

Contoh penggunaan

Kami akan gunakan tabel contoh ini

| FIELD1 | FIELD2 | FIELD3 |
|--------|--------|--------|
|    foo |      1 |     13 |
|    bar |      2 | (null) |
|   test |      3 |     13 |

Ini adalah beberapa contoh dari beberapa fungsi-fungsi pengumpulan tujuan-umum:

>>> TestModel.objects.aggregate(result=StringAgg('field1', delimiter=';'))
{'result': 'foo;bar;test'}
>>> TestModel.objects.aggregate(result=ArrayAgg('field2'))
{'result': [1, 2, 3]}
>>> TestModel.objects.aggregate(result=ArrayAgg('field1'))
{'result': ['foo', 'bar', 'test']}

Contoh selanjutnya menunjukkan penggunaan dari fungsi-fungsi pengumpulan statistik. Jalur pokok akan tidak digambarkan (anda dapat membaca tentang ini, sebagai contoh, pada wikipedia):

>>> TestModel.objects.aggregate(count=RegrCount(y='field3', x='field2'))
{'count': 2}
>>> TestModel.objects.aggregate(avgx=RegrAvgX(y='field3', x='field2'),
...                             avgy=RegrAvgY(y='field3', x='field2'))
{'avgx': 2, 'avgy': 13}