首页
随机页面
分类
查看“Django/docs/2.2.x/ref/contrib/postgres/aggregates”的源代码
来自菜鸟教程
Django/docs/2.2.x/ref/contrib/postgres/aggregates / ←
PostgreSQL 特定的聚合函数 — Django 文档
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
<div id="module-django.contrib.postgres.aggregates" class="section"> <span id="postgresql-specific-aggregation-functions"></span> = PostgreSQL specific aggregation functions = These functions are available from the <code>django.contrib.postgres.aggregates</code> module. They are described in more detail in the [https://www.postgresql.org/docs/current/functions-aggregate.html PostgreSQL docs]. <div class="admonition note"> 注解 All functions come without default aliases, so you must explicitly provide one. For example: <div class="highlight-default notranslate"> <div class="highlight"> <pre>>>> SomeModel.objects.aggregate(arr=ArrayAgg('somefield')) {'arr': [0, 1, 2]}</pre> </div> </div> </div> <div class="admonition-common-aggregate-options admonition"> Common aggregate options All aggregates have the [[../../../models/querysets#aggregate-filter|<span class="std std-ref">filter</span>]] keyword argument. </div> <div id="general-purpose-aggregation-functions" class="section"> == General-purpose aggregation functions == <div id="arrayagg" class="section"> === <code>ArrayAgg</code> === <dl> <dt>''class'' <code>ArrayAgg</code><span class="sig-paren">(</span>''<span class="n">expression</span>'', ''<span class="n">distinct</span><span class="o">=</span><span class="default_value">False</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>'', ''<span class="n">ordering</span><span class="o">=</span><span class="default_value">()</span>'', ''<span class="o">**</span><span class="n">extra</span>''<span class="sig-paren">)</span></dt> <dd><p>Returns a list of values, including nulls, concatenated into an array.</p> <dl> <dt><code>distinct</code></dt> <dd><p>An optional boolean argument that determines if array values will be distinct. Defaults to <code>False</code>.</p></dd></dl> <dl> <dt><code>ordering</code></dt> <dd><div class="versionadded"> </div> <p>An optional string of a field name (with an optional <code>"-"</code> prefix which indicates descending order) or an expression (or a tuple or list of strings and/or expressions) that specifies the ordering of the elements in the result list.</p> <p>举例:</p> <div class="highlight-default notranslate"> <div class="highlight"> <pre>'some_field' '-some_field' from django.db.models import F F('some_field').desc()</pre> </div> </div></dd></dl> </dd></dl> </div> <div id="bitand" class="section"> === <code>BitAnd</code> === ; ''class'' <code>BitAnd</code><span class="sig-paren">(</span>''<span class="n">expression</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>'', ''<span class="o">**</span><span class="n">extra</span>''<span class="sig-paren">)</span> : Returns an <code>int</code> of the bitwise <code>AND</code> of all non-null input values, or <code>None</code> if all values are null. </div> <div id="bitor" class="section"> === <code>BitOr</code> === ; ''class'' <code>BitOr</code><span class="sig-paren">(</span>''<span class="n">expression</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>'', ''<span class="o">**</span><span class="n">extra</span>''<span class="sig-paren">)</span> : Returns an <code>int</code> of the bitwise <code>OR</code> of all non-null input values, or <code>None</code> if all values are null. </div> <div id="booland" class="section"> === <code>BoolAnd</code> === ; ''class'' <code>BoolAnd</code><span class="sig-paren">(</span>''<span class="n">expression</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>'', ''<span class="o">**</span><span class="n">extra</span>''<span class="sig-paren">)</span> : Returns <code>True</code>, if all input values are true, <code>None</code> if all values are null or if there are no values, otherwise <code>False</code> . </div> <div id="boolor" class="section"> === <code>BoolOr</code> === ; ''class'' <code>BoolOr</code><span class="sig-paren">(</span>''<span class="n">expression</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>'', ''<span class="o">**</span><span class="n">extra</span>''<span class="sig-paren">)</span> : Returns <code>True</code> if at least one input value is true, <code>None</code> if all values are null or if there are no values, otherwise <code>False</code>. </div> <div id="jsonbagg" class="section"> === <code>JSONBAgg</code> === ; ''class'' <code>JSONBAgg</code><span class="sig-paren">(</span>''<span class="n">expressions</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>'', ''<span class="o">**</span><span class="n">extra</span>''<span class="sig-paren">)</span> : Returns the input values as a <code>JSON</code> array. Requires PostgreSQL ≥ 9.5. </div> <div id="stringagg" class="section"> === <code>StringAgg</code> === <dl> <dt>''class'' <code>StringAgg</code><span class="sig-paren">(</span>''<span class="n">expression</span>'', ''<span class="n">delimiter</span>'', ''<span class="n">distinct</span><span class="o">=</span><span class="default_value">False</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>'', ''<span class="n">ordering</span><span class="o">=</span><span class="default_value">()</span>''<span class="sig-paren">)</span></dt> <dd><p>Returns the input values concatenated into a string, separated by the <code>delimiter</code> string.</p> <dl> <dt><code>delimiter</code></dt> <dd><p>Required argument. Needs to be a string.</p></dd></dl> <dl> <dt><code>distinct</code></dt> <dd><p>An optional boolean argument that determines if concatenated values will be distinct. Defaults to <code>False</code>.</p></dd></dl> <dl> <dt><code>ordering</code></dt> <dd><div class="versionadded"> </div> <p>An optional string of a field name (with an optional <code>"-"</code> prefix which indicates descending order) or an expression (or a tuple or list of strings and/or expressions) that specifies the ordering of the elements in the result string.</p> <p>Examples are the same as for [[#django.contrib.postgres.aggregates.ArrayAgg.ordering|<code>ArrayAgg.ordering</code>]].</p></dd></dl> </dd></dl> </div> </div> <div id="aggregate-functions-for-statistics" class="section"> == Aggregate functions for statistics == <div id="y-and-x" class="section"> === <code>y</code> and <code>x</code> === The arguments <code>y</code> and <code>x</code> for all these functions can be the name of a field or an expression returning a numeric data. Both are required. </div> <div id="corr" class="section"> === <code>Corr</code> === ; ''class'' <code>Corr</code><span class="sig-paren">(</span>''<span class="n">y</span>'', ''<span class="n">x</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>''<span class="sig-paren">)</span> : Returns the correlation coefficient as a <code>float</code>, or <code>None</code> if there aren't any matching rows. </div> <div id="covarpop" class="section"> === <code>CovarPop</code> === <dl> <dt>''class'' <code>CovarPop</code><span class="sig-paren">(</span>''<span class="n">y</span>'', ''<span class="n">x</span>'', ''<span class="n">sample</span><span class="o">=</span><span class="default_value">False</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>''<span class="sig-paren">)</span></dt> <dd><p>Returns the population covariance as a <code>float</code>, or <code>None</code> if there aren't any matching rows.</p> <p>包含一个可选参数:</p> <dl> <dt><code>sample</code></dt> <dd><p>By default <code>CovarPop</code> returns the general population covariance. However, if <code>sample=True</code>, the return value will be the sample population covariance.</p></dd></dl> </dd></dl> </div> <div id="regravgx" class="section"> === <code>RegrAvgX</code> === ; ''class'' <code>RegrAvgX</code><span class="sig-paren">(</span>''<span class="n">y</span>'', ''<span class="n">x</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>''<span class="sig-paren">)</span> : Returns the average of the independent variable (<code>sum(x)/N</code>) as a <code>float</code>, or <code>None</code> if there aren't any matching rows. </div> <div id="regravgy" class="section"> === <code>RegrAvgY</code> === ; ''class'' <code>RegrAvgY</code><span class="sig-paren">(</span>''<span class="n">y</span>'', ''<span class="n">x</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>''<span class="sig-paren">)</span> : Returns the average of the dependent variable (<code>sum(y)/N</code>) as a <code>float</code>, or <code>None</code> if there aren't any matching rows. </div> <div id="regrcount" class="section"> === <code>RegrCount</code> === ; ''class'' <code>RegrCount</code><span class="sig-paren">(</span>''<span class="n">y</span>'', ''<span class="n">x</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>''<span class="sig-paren">)</span> : Returns an <code>int</code> of the number of input rows in which both expressions are not null. </div> <div id="regrintercept" class="section"> === <code>RegrIntercept</code> === ; ''class'' <code>RegrIntercept</code><span class="sig-paren">(</span>''<span class="n">y</span>'', ''<span class="n">x</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>''<span class="sig-paren">)</span> : Returns the y-intercept of the least-squares-fit linear equation determined by the <code>(x, y)</code> pairs as a <code>float</code>, or <code>None</code> if there aren't any matching rows. </div> <div id="regrr2" class="section"> === <code>RegrR2</code> === ; ''class'' <code>RegrR2</code><span class="sig-paren">(</span>''<span class="n">y</span>'', ''<span class="n">x</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>''<span class="sig-paren">)</span> : Returns the square of the correlation coefficient as a <code>float</code>, or <code>None</code> if there aren't any matching rows. </div> <div id="regrslope" class="section"> === <code>RegrSlope</code> === ; ''class'' <code>RegrSlope</code><span class="sig-paren">(</span>''<span class="n">y</span>'', ''<span class="n">x</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>''<span class="sig-paren">)</span> : Returns the slope of the least-squares-fit linear equation determined by the <code>(x, y)</code> pairs as a <code>float</code>, or <code>None</code> if there aren't any matching rows. </div> <div id="regrsxx" class="section"> === <code>RegrSXX</code> === ; ''class'' <code>RegrSXX</code><span class="sig-paren">(</span>''<span class="n">y</span>'', ''<span class="n">x</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>''<span class="sig-paren">)</span> : Returns <code>sum(x^2) - sum(x)^2/N</code> ("sum of squares" of the independent variable) as a <code>float</code>, or <code>None</code> if there aren't any matching rows. </div> <div id="regrsxy" class="section"> === <code>RegrSXY</code> === ; ''class'' <code>RegrSXY</code><span class="sig-paren">(</span>''<span class="n">y</span>'', ''<span class="n">x</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>''<span class="sig-paren">)</span> : Returns <code>sum(x*y) - sum(x) * sum(y)/N</code> ("sum of products" of independent times dependent variable) as a <code>float</code>, or <code>None</code> if there aren't any matching rows. </div> <div id="regrsyy" class="section"> === <code>RegrSYY</code> === ; ''class'' <code>RegrSYY</code><span class="sig-paren">(</span>''<span class="n">y</span>'', ''<span class="n">x</span>'', ''<span class="n">filter</span><span class="o">=</span><span class="default_value">None</span>''<span class="sig-paren">)</span> : Returns <code>sum(y^2) - sum(y)^2/N</code> ("sum of squares" of the dependent variable) as a <code>float</code>, or <code>None</code> if there aren't any matching rows. </div> </div> <div id="usage-examples" class="section"> == Usage examples == We will use this example table: <div class="highlight-default notranslate"> <div class="highlight"> <pre>| FIELD1 | FIELD2 | FIELD3 | |--------|--------|--------| | foo | 1 | 13 | | bar | 2 | (null) | | test | 3 | 13 |</pre> </div> </div> Here's some examples of some of the general-purpose aggregation functions: <div class="highlight-default notranslate"> <div class="highlight"> <pre>>>> 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']}</pre> </div> </div> The next example shows the usage of statistical aggregate functions. The underlying math will be not described (you can read about this, for example, at [https://en.wikipedia.org/wiki/Regression_analysis wikipedia]): <div class="highlight-default notranslate"> <div class="highlight"> <pre>>>> 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}</pre> </div> </div> </div> </div> [[Category:Django 2.2.x 中文文档]]
返回至“
PostgreSQL 特定的聚合函数 — Django 文档
”。