“Django/docs/2.2.x/ref/contrib/postgres/aggregates”的版本间差异

来自菜鸟教程
Django/docs/2.2.x/ref/contrib/postgres/aggregates
跳转至:导航、​搜索
(autoload)
 
(Page commit)
 
第1行: 第1行:
 +
{{DISPLAYTITLE:PostgreSQL 特定的聚合函数 — Django 文档}}
 
<div id="module-django.contrib.postgres.aggregates" class="section">
 
<div id="module-django.contrib.postgres.aggregates" class="section">
  
 
<span id="postgresql-specific-aggregation-functions"></span>
 
<span id="postgresql-specific-aggregation-functions"></span>
= PostgreSQL specific aggregation functions =
+
= PostgreSQL 特有聚合函数 =
  
These functions are available from the <code>django.contrib.postgres.aggregates</code>
+
这些功能可从 <code>django.contrib.postgres.aggregates</code> 模块获得。 它们在 [https://www.postgresql.org/docs/current/functions-aggregate.html PostgreSQL 文档] 中有更详细的描述。
module. They are described in more detail in the [https://www.postgresql.org/docs/current/functions-aggregate.html PostgreSQL docs].
 
  
 
<div class="admonition note">
 
<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-default notranslate">
第18行: 第17行:
 
<div class="highlight">
 
<div class="highlight">
  
<pre>&gt;&gt;&gt; SomeModel.objects.aggregate(arr=ArrayAgg('somefield'))
+
<syntaxhighlight lang="python">>>> SomeModel.objects.aggregate(arr=ArrayAgg('somefield'))
{'arr': [0, 1, 2]}</pre>
+
{'arr': [0, 1, 2]}</syntaxhighlight>
  
 
</div>
 
</div>
第28行: 第27行:
 
<div class="admonition-common-aggregate-options admonition">
 
<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
+
所有聚合都有 [[../../../models/querysets#aggregate-filter|filter]] 关键字参数。
argument.
 
  
  
第37行: 第35行:
 
<div id="general-purpose-aggregation-functions" class="section">
 
<div id="general-purpose-aggregation-functions" class="section">
  
== General-purpose aggregation functions ==
+
== 通用聚合函数 ==
  
 
<div id="arrayagg" class="section">
 
<div id="arrayagg" class="section">
  
=== <code>ArrayAgg</code> ===
+
=== ArrayAgg ===
  
 
<dl>
 
<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>
+
<dt>''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">ArrayAgg</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">expression</span></span>'', ''<span class="n"><span class="pre">distinct</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span>'', ''<span class="n"><span class="pre">ordering</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">()</span></span>'', ''<span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">extra</span></span>''<span class="sig-paren">)</span></dt>
<dd><p>Returns a list of values, including nulls, concatenated into an array.</p>
+
<dd><p>返回一个值的列表,包括空值,连接成一个数组。</p>
 
<dl>
 
<dl>
<dt><code>distinct</code></dt>
+
<dt><span class="sig-name descname"><span class="pre">distinct</span></span></dt>
<dd><p>An optional boolean argument that determines if array values
+
<dd><p>一个可选的布尔参数,用于确定数组值是否不同。 默认为 <code>False</code></p></dd></dl>
will be distinct. Defaults to <code>False</code>.</p></dd></dl>
 
  
 
<dl>
 
<dl>
<dt><code>ordering</code></dt>
+
<dt><span class="sig-name descname"><span class="pre">ordering</span></span></dt>
 
<dd><div class="versionadded">
 
<dd><div class="versionadded">
  
 
+
<p><span class="versionmodified added">2.2 版中的新功能。</span></p>
  
 
</div>
 
</div>
<p>An optional string of a field name (with an optional <code>&quot;-&quot;</code> prefix
+
<p>字段名称的可选字符串(带有指示降序的可选 <code>&quot;-&quot;</code> 前缀)或指定结果列表中元素顺序的表达式(或字符串和/或表达式的元组或列表) .</p>
which indicates descending order) or an expression (or a tuple or list
+
<p>例子:</p>
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-default notranslate">
  
 
<div class="highlight">
 
<div class="highlight">
  
<pre>'some_field'
+
<syntaxhighlight lang="python">'some_field'
 
'-some_field'
 
'-some_field'
 
from django.db.models import F
 
from django.db.models import F
F('some_field').desc()</pre>
+
F('some_field').desc()</syntaxhighlight>
  
 
</div>
 
</div>
第81行: 第75行:
 
<div id="bitand" class="section">
 
<div id="bitand" class="section">
  
=== <code>BitAnd</code> ===
+
=== BitAnd ===
  
; ''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>
+
; ''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">BitAnd</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">expression</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span>'', ''<span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">extra</span></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.
+
: 返回所有非空输入值的按位 <code>AND</code> <code>int</code>,如果所有值都为空,则返回 <code>None</code>
  
  
第90行: 第84行:
 
<div id="bitor" class="section">
 
<div id="bitor" class="section">
  
=== <code>BitOr</code> ===
+
=== BitOr ===
  
; ''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>
+
; ''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">BitOr</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">expression</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span>'', ''<span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">extra</span></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.
+
: 返回所有非空输入值的按位 <code>OR</code> <code>int</code>,如果所有值都为空,则返回 <code>None</code>
  
  
第99行: 第93行:
 
<div id="booland" class="section">
 
<div id="booland" class="section">
  
=== <code>BoolAnd</code> ===
+
=== BoolAnd ===
  
; ''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>
+
; ''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">BoolAnd</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">expression</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span>'', ''<span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">extra</span></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> .
+
: 如果所有输入值都为真,则返回 <code>True</code>,如果所有值都为空或没有值,则返回 <code>None</code>,否则返回 <code>False</code>
  
  
第108行: 第102行:
 
<div id="boolor" class="section">
 
<div id="boolor" class="section">
  
=== <code>BoolOr</code> ===
+
=== BoolOr ===
  
; ''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>
+
; ''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">BoolOr</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">expression</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span>'', ''<span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">extra</span></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>.
+
: 如果至少有一个输入值为真,则返回 <code>True</code>,如果所有值都为空或没有值,则返回 <code>None</code>,否则返回 <code>False</code>
  
  
第117行: 第111行:
 
<div id="jsonbagg" class="section">
 
<div id="jsonbagg" class="section">
  
=== <code>JSONBAgg</code> ===
+
=== JSONBAgg ===
  
; ''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>
+
; ''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">JSONBAgg</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">expressions</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span>'', ''<span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">extra</span></span>''<span class="sig-paren">)</span>
: Returns the input values as a <code>JSON</code> array. Requires PostgreSQL ≥ 9.5.
+
: 将输入值作为 <code>JSON</code> 数组返回。 需要 PostgreSQL ≥ 9.5。
  
  
第126行: 第120行:
 
<div id="stringagg" class="section">
 
<div id="stringagg" class="section">
  
=== <code>StringAgg</code> ===
+
=== StringAgg ===
  
 
<dl>
 
<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>
+
<dt>''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">StringAgg</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">expression</span></span>'', ''<span class="n"><span class="pre">delimiter</span></span>'', ''<span class="n"><span class="pre">distinct</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span>'', ''<span class="n"><span class="pre">ordering</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">()</span></span>''<span class="sig-paren">)</span></dt>
<dd><p>Returns the input values concatenated into a string, separated by
+
<dd><p>返回连接成字符串的输入值,由 <code>delimiter</code> 字符串分隔。</p>
the <code>delimiter</code> string.</p>
 
 
<dl>
 
<dl>
<dt><code>delimiter</code></dt>
+
<dt><span class="sig-name descname"><span class="pre">delimiter</span></span></dt>
<dd><p>Required argument. Needs to be a string.</p></dd></dl>
+
<dd><p>必需的参数。 必须是字符串。</p></dd></dl>
  
 
<dl>
 
<dl>
<dt><code>distinct</code></dt>
+
<dt><span class="sig-name descname"><span class="pre">distinct</span></span></dt>
<dd><p>An optional boolean argument that determines if concatenated values
+
<dd><p>一个可选的布尔参数,用于确定连接的值是否不同。 默认为 <code>False</code></p></dd></dl>
will be distinct. Defaults to <code>False</code>.</p></dd></dl>
 
  
 
<dl>
 
<dl>
<dt><code>ordering</code></dt>
+
<dt><span class="sig-name descname"><span class="pre">ordering</span></span></dt>
 
<dd><div class="versionadded">
 
<dd><div class="versionadded">
  
 
+
<p><span class="versionmodified added">2.2 版中的新功能。</span></p>
  
 
</div>
 
</div>
<p>An optional string of a field name (with an optional <code>&quot;-&quot;</code> prefix
+
<p>字段名称的可选字符串(带有指示降序的可选 <code>&quot;-&quot;</code> 前缀)或指定结果字符串中元素顺序的表达式(或字符串和/或表达式的元组或列表) .</p>
which indicates descending order) or an expression (or a tuple or list
+
<p>示例与 [[#django.contrib.postgres.aggregates.ArrayAgg.ordering|ArrayAgg.ordering]] 相同。</p></dd></dl>
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>
 
</dd></dl>
  
第161行: 第150行:
 
<div id="aggregate-functions-for-statistics" class="section">
 
<div id="aggregate-functions-for-statistics" class="section">
  
== Aggregate functions for statistics ==
+
== 统计的聚合功能 ==
  
 
<div id="y-and-x" class="section">
 
<div id="y-and-x" class="section">
  
=== <code>y</code> and <code>x</code> ===
+
=== y x ===
  
The arguments <code>y</code> and <code>x</code> for all these functions can be the name of a
+
所有这些函数的参数 <code>y</code> <code>x</code> 可以是字段名称或返回数字数据的表达式。 两者都是必需的。
field or an expression returning a numeric data. Both are required.
 
  
  
第174行: 第162行:
 
<div id="corr" class="section">
 
<div id="corr" class="section">
  
=== <code>Corr</code> ===
+
=== Corr ===
  
; ''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>
+
; ''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">Corr</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">y</span></span>'', ''<span class="n"><span class="pre">x</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></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.
+
: 如果没有任何匹配的行,则以 <code>float</code> <code>None</code> 的形式返回相关系数。
  
  
第183行: 第171行:
 
<div id="covarpop" class="section">
 
<div id="covarpop" class="section">
  
=== <code>CovarPop</code> ===
+
=== CovarPop ===
  
 
<dl>
 
<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>
+
<dt>''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">CovarPop</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">y</span></span>'', ''<span class="n"><span class="pre">x</span></span>'', ''<span class="n"><span class="pre">sample</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span>''<span class="sig-paren">)</span></dt>
<dd><p>Returns the population covariance as a <code>float</code>, or <code>None</code> if there
+
<dd><p>如果没有任何匹配的行,则以 <code>float</code> <code>None</code> 的形式返回总体协方差。</p>
aren't any matching rows.</p>
 
 
<p>包含一个可选参数:</p>
 
<p>包含一个可选参数:</p>
 
<dl>
 
<dl>
<dt><code>sample</code></dt>
+
<dt><span class="sig-name descname"><span class="pre">sample</span></span></dt>
<dd><p>By default <code>CovarPop</code> returns the general population covariance.
+
<dd><p>默认情况下,<code>CovarPop</code> 返回总体总体协方差。 但是,如果 <code>sample=True</code>,返回值将是样本总体协方差。</p></dd></dl>
However, if <code>sample=True</code>, the return value will be the sample
 
population covariance.</p></dd></dl>
 
 
</dd></dl>
 
</dd></dl>
  
第201行: 第186行:
 
<div id="regravgx" class="section">
 
<div id="regravgx" class="section">
  
=== <code>RegrAvgX</code> ===
+
=== RegrAvgX ===
  
; ''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>
+
; ''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">RegrAvgX</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">y</span></span>'', ''<span class="n"><span class="pre">x</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></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.
+
: 如果没有任何匹配的行,则以 <code>float</code> <code>None</code> 的形式返回自变量 (<code>sum(x)/N</code>) 的平均值。
  
  
第210行: 第195行:
 
<div id="regravgy" class="section">
 
<div id="regravgy" class="section">
  
=== <code>RegrAvgY</code> ===
+
=== RegrAvgY ===
  
; ''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>
+
; ''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">RegrAvgY</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">y</span></span>'', ''<span class="n"><span class="pre">x</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></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.
+
: 如果没有任何匹配的行,则以 <code>float</code> <code>None</code> 的形式返回因变量 (<code>sum(y)/N</code>) 的平均值。
  
  
第219行: 第204行:
 
<div id="regrcount" class="section">
 
<div id="regrcount" class="section">
  
=== <code>RegrCount</code> ===
+
=== RegrCount ===
  
; ''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>
+
; ''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">RegrCount</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">y</span></span>'', ''<span class="n"><span class="pre">x</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span>''<span class="sig-paren">)</span>
: Returns an <code>int</code> of the number of input rows in which both expressions are not null.
+
: 返回两个表达式都不为空的输入行数的 <code>int</code>
  
  
第228行: 第213行:
 
<div id="regrintercept" class="section">
 
<div id="regrintercept" class="section">
  
=== <code>RegrIntercept</code> ===
+
=== RegrIntercept ===
  
; ''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>
+
; ''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">RegrIntercept</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">y</span></span>'', ''<span class="n"><span class="pre">x</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></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.
+
: 如果没有任何匹配的行,则返回由 <code>(x, y)</code> 对确定的最小二乘拟合线性方程的 y 截距作为 <code>float</code> <code>None</code>
  
  
第237行: 第222行:
 
<div id="regrr2" class="section">
 
<div id="regrr2" class="section">
  
=== <code>RegrR2</code> ===
+
=== RegrR2 ===
  
; ''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>
+
; ''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">RegrR2</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">y</span></span>'', ''<span class="n"><span class="pre">x</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></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.
+
: 如果没有任何匹配的行,则以 <code>float</code> <code>None</code> 的形式返回相关系数的平方。
  
  
第246行: 第231行:
 
<div id="regrslope" class="section">
 
<div id="regrslope" class="section">
  
=== <code>RegrSlope</code> ===
+
=== RegrSlope ===
  
; ''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>
+
; ''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">RegrSlope</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">y</span></span>'', ''<span class="n"><span class="pre">x</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></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.
+
: 如果没有任何匹配的行,则返回由 <code>(x, y)</code> 对确定的最小二乘拟合线性方程的斜率作为 <code>float</code> <code>None</code>
  
  
第255行: 第240行:
 
<div id="regrsxx" class="section">
 
<div id="regrsxx" class="section">
  
=== <code>RegrSXX</code> ===
+
=== RegrSXX ===
  
; ''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>
+
; ''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">RegrSXX</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">y</span></span>'', ''<span class="n"><span class="pre">x</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span>''<span class="sig-paren">)</span>
: Returns <code>sum(x^2) - sum(x)^2/N</code> (&quot;sum of squares&quot; of the independent variable) as a <code>float</code>, or <code>None</code> if there aren't any matching rows.
+
: 如果没有任何匹配的行,则返回 <code>sum(x^2) - sum(x)^2/N</code>(自变量的“平方和”)作为 <code>float</code> <code>None</code>
  
  
第264行: 第249行:
 
<div id="regrsxy" class="section">
 
<div id="regrsxy" class="section">
  
=== <code>RegrSXY</code> ===
+
=== RegrSXY ===
  
; ''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>
+
; ''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">RegrSXY</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">y</span></span>'', ''<span class="n"><span class="pre">x</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span>''<span class="sig-paren">)</span>
: Returns <code>sum(x*y) - sum(x) * sum(y)/N</code> (&quot;sum of products&quot; of independent times dependent variable) as a <code>float</code>, or <code>None</code> if there aren't any matching rows.
+
: 如果没有任何匹配的行,则返回 <code>sum(x*y) - sum(x) * sum(y)/N</code>(独立时间因变量的“乘积之和”)作为 <code>float</code> <code>None</code>
  
  
第273行: 第258行:
 
<div id="regrsyy" class="section">
 
<div id="regrsyy" class="section">
  
=== <code>RegrSYY</code> ===
+
=== RegrSYY ===
  
; ''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>
+
; ''<span class="pre">class</span>'' <span class="sig-name descname"><span class="pre">RegrSYY</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">y</span></span>'', ''<span class="n"><span class="pre">x</span></span>'', ''<span class="n"><span class="pre">filter</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span>''<span class="sig-paren">)</span>
: Returns <code>sum(y^2) - sum(y)^2/N</code> (&quot;sum of squares&quot; of the dependent variable) as a <code>float</code>, or <code>None</code> if there aren't any matching rows.
+
: 如果没有任何匹配的行,则返回 <code>sum(y^2) - sum(y)^2/N</code>(因变量的“平方和”)作为 <code>float</code> <code>None</code>
  
  
第284行: 第269行:
 
<div id="usage-examples" class="section">
 
<div id="usage-examples" class="section">
  
== Usage examples ==
+
== 使用实例: ==
  
We will use this example table:
+
我们将使用此示例表:
  
 
<div class="highlight-default notranslate">
 
<div class="highlight-default notranslate">
第292行: 第277行:
 
<div class="highlight">
 
<div class="highlight">
  
<pre>| FIELD1 | FIELD2 | FIELD3 |
+
<syntaxhighlight lang="python">| FIELD1 | FIELD2 | FIELD3 |
 
|--------|--------|--------|
 
|--------|--------|--------|
 
|    foo |      1 |    13 |
 
|    foo |      1 |    13 |
 
|    bar |      2 | (null) |
 
|    bar |      2 | (null) |
|  test |      3 |    13 |</pre>
+
|  test |      3 |    13 |</syntaxhighlight>
  
 
</div>
 
</div>
  
 
</div>
 
</div>
Here's some examples of some of the general-purpose aggregation functions:
+
以下是一些通用聚合函数的示例:
  
 
<div class="highlight-default notranslate">
 
<div class="highlight-default notranslate">
第307行: 第292行:
 
<div class="highlight">
 
<div class="highlight">
  
<pre>&gt;&gt;&gt; TestModel.objects.aggregate(result=StringAgg('field1', delimiter=';'))
+
<syntaxhighlight lang="python">>>> TestModel.objects.aggregate(result=StringAgg('field1', delimiter=';'))
 
{'result': 'foo;bar;test'}
 
{'result': 'foo;bar;test'}
&gt;&gt;&gt; TestModel.objects.aggregate(result=ArrayAgg('field2'))
+
>>> TestModel.objects.aggregate(result=ArrayAgg('field2'))
 
{'result': [1, 2, 3]}
 
{'result': [1, 2, 3]}
&gt;&gt;&gt; TestModel.objects.aggregate(result=ArrayAgg('field1'))
+
>>> TestModel.objects.aggregate(result=ArrayAgg('field1'))
{'result': ['foo', 'bar', 'test']}</pre>
+
{'result': ['foo', 'bar', 'test']}</syntaxhighlight>
  
 
</div>
 
</div>
  
 
</div>
 
</div>
The next example shows the usage of statistical aggregate functions. The
+
下一个示例显示了统计聚合函数的用法。 将不描述基础数学(例如,您可以在 [https://en.wikipedia.org/wiki/Regression_analysis wikipedia] 中阅读相关内容):
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-default notranslate">
第325行: 第308行:
 
<div class="highlight">
 
<div class="highlight">
  
<pre>&gt;&gt;&gt; TestModel.objects.aggregate(count=RegrCount(y='field3', x='field2'))
+
<syntaxhighlight lang="python">>>> TestModel.objects.aggregate(count=RegrCount(y='field3', x='field2'))
 
{'count': 2}
 
{'count': 2}
&gt;&gt;&gt; TestModel.objects.aggregate(avgx=RegrAvgX(y='field3', x='field2'),
+
>>> TestModel.objects.aggregate(avgx=RegrAvgX(y='field3', x='field2'),
 
...                            avgy=RegrAvgY(y='field3', x='field2'))
 
...                            avgy=RegrAvgY(y='field3', x='field2'))
{'avgx': 2, 'avgy': 13}</pre>
+
{'avgx': 2, 'avgy': 13}</syntaxhighlight>
 +
 
 +
</div>
  
 
</div>
 
</div>
第336行: 第321行:
  
 
</div>
 
</div>
 +
<div class="clearer">
 +
 +
  
 
</div>
 
</div>
  
[[Category:Django 2.2.x 中文文档]]
+
[[Category:Django 2.2.x 文档]]

2021年10月31日 (日) 04:05的最新版本

PostgreSQL 特有聚合函数

这些功能可从 django.contrib.postgres.aggregates 模块获得。 它们在 PostgreSQL 文档 中有更详细的描述。

笔记

所有函数都没有默认别名,因此您必须明确提供一个。 例如:

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

通用聚合选项

所有聚合都有 filter 关键字参数。


通用聚合函数

ArrayAgg

class ArrayAgg(expression, distinct=False, filter=None, ordering=(), **extra)

返回一个值的列表,包括空值,连接成一个数组。

distinct

一个可选的布尔参数,用于确定数组值是否不同。 默认为 False

ordering

2.2 版中的新功能。

字段名称的可选字符串(带有指示降序的可选 "-" 前缀)或指定结果列表中元素顺序的表达式(或字符串和/或表达式的元组或列表) .

例子:

'some_field'
'-some_field'
from django.db.models import F
F('some_field').desc()


BitAnd

class BitAnd(expression, filter=None, **extra)
返回所有非空输入值的按位 ANDint,如果所有值都为空,则返回 None


BitOr

class BitOr(expression, filter=None, **extra)
返回所有非空输入值的按位 ORint,如果所有值都为空,则返回 None


BoolAnd

class BoolAnd(expression, filter=None, **extra)
如果所有输入值都为真,则返回 True,如果所有值都为空或没有值,则返回 None,否则返回 False


BoolOr

class BoolOr(expression, filter=None, **extra)
如果至少有一个输入值为真,则返回 True,如果所有值都为空或没有值,则返回 None,否则返回 False


JSONBAgg

class JSONBAgg(expressions, filter=None, **extra)
将输入值作为 JSON 数组返回。 需要 PostgreSQL ≥ 9.5。


StringAgg

class StringAgg(expression, delimiter, distinct=False, filter=None, ordering=())

返回连接成字符串的输入值,由 delimiter 字符串分隔。

delimiter

必需的参数。 必须是字符串。

distinct

一个可选的布尔参数,用于确定连接的值是否不同。 默认为 False

ordering

2.2 版中的新功能。

字段名称的可选字符串(带有指示降序的可选 "-" 前缀)或指定结果字符串中元素顺序的表达式(或字符串和/或表达式的元组或列表) .

示例与 ArrayAgg.ordering 相同。


统计的聚合功能

y 和 x

所有这些函数的参数 yx 可以是字段名称或返回数字数据的表达式。 两者都是必需的。


Corr

class Corr(y, x, filter=None)
如果没有任何匹配的行,则以 floatNone 的形式返回相关系数。


CovarPop

class CovarPop(y, x, sample=False, filter=None)

如果没有任何匹配的行,则以 floatNone 的形式返回总体协方差。

包含一个可选参数:

sample

默认情况下,CovarPop 返回总体总体协方差。 但是,如果 sample=True,返回值将是样本总体协方差。


RegrAvgX

class RegrAvgX(y, x, filter=None)
如果没有任何匹配的行,则以 floatNone 的形式返回自变量 (sum(x)/N) 的平均值。


RegrAvgY

class RegrAvgY(y, x, filter=None)
如果没有任何匹配的行,则以 floatNone 的形式返回因变量 (sum(y)/N) 的平均值。


RegrCount

class RegrCount(y, x, filter=None)
返回两个表达式都不为空的输入行数的 int


RegrIntercept

class RegrIntercept(y, x, filter=None)
如果没有任何匹配的行,则返回由 (x, y) 对确定的最小二乘拟合线性方程的 y 截距作为 floatNone


RegrR2

class RegrR2(y, x, filter=None)
如果没有任何匹配的行,则以 floatNone 的形式返回相关系数的平方。


RegrSlope

class RegrSlope(y, x, filter=None)
如果没有任何匹配的行,则返回由 (x, y) 对确定的最小二乘拟合线性方程的斜率作为 floatNone


RegrSXX

class RegrSXX(y, x, filter=None)
如果没有任何匹配的行,则返回 sum(x^2) - sum(x)^2/N(自变量的“平方和”)作为 floatNone


RegrSXY

class RegrSXY(y, x, filter=None)
如果没有任何匹配的行,则返回 sum(x*y) - sum(x) * sum(y)/N(独立时间因变量的“乘积之和”)作为 floatNone


RegrSYY

class RegrSYY(y, x, filter=None)
如果没有任何匹配的行,则返回 sum(y^2) - sum(y)^2/N(因变量的“平方和”)作为 floatNone


使用实例:

我们将使用此示例表:

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

以下是一些通用聚合函数的示例:

>>> 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']}

下一个示例显示了统计聚合函数的用法。 将不描述基础数学(例如,您可以在 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}