“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 | + | = PostgreSQL 特有聚合函数 = |
− | + | 这些功能可从 <code>django.contrib.postgres.aggregates</code> 模块获得。 它们在 [https://www.postgresql.org/docs/current/functions-aggregate.html PostgreSQL 文档] 中有更详细的描述。 | |
− | |||
<div class="admonition note"> | <div class="admonition note"> | ||
− | + | 笔记 | |
− | + | 所有函数都没有默认别名,因此您必须明确提供一个。 例如: | |
− | |||
<div class="highlight-default notranslate"> | <div class="highlight-default notranslate"> | ||
第18行: | 第17行: | ||
<div class="highlight"> | <div class="highlight"> | ||
− | < | + | <syntaxhighlight lang="python">>>> SomeModel.objects.aggregate(arr=ArrayAgg('somefield')) |
− | {'arr': [0, 1, 2]}</ | + | {'arr': [0, 1, 2]}</syntaxhighlight> |
</div> | </div> | ||
第28行: | 第27行: | ||
<div class="admonition-common-aggregate-options admonition"> | <div class="admonition-common-aggregate-options admonition"> | ||
− | + | 通用聚合选项 | |
− | + | 所有聚合都有 [[../../../models/querysets#aggregate-filter|filter]] 关键字参数。 | |
− | |||
第37行: | 第35行: | ||
<div id="general-purpose-aggregation-functions" class="section"> | <div id="general-purpose-aggregation-functions" class="section"> | ||
− | == | + | == 通用聚合函数 == |
<div id="arrayagg" class="section"> | <div id="arrayagg" class="section"> | ||
− | === | + | === ArrayAgg === |
<dl> | <dl> | ||
− | <dt>''class'' < | + | <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> | + | <dd><p>返回一个值的列表,包括空值,连接成一个数组。</p> |
<dl> | <dl> | ||
− | <dt>< | + | <dt><span class="sig-name descname"><span class="pre">distinct</span></span></dt> |
− | <dd><p> | + | <dd><p>一个可选的布尔参数,用于确定数组值是否不同。 默认为 <code>False</code>。</p></dd></dl> |
− | |||
<dl> | <dl> | ||
− | <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> | + | <p>字段名称的可选字符串(带有指示降序的可选 <code>"-"</code> 前缀)或指定结果列表中元素顺序的表达式(或字符串和/或表达式的元组或列表) .</p> |
− | + | <p>例子:</p> | |
− | |||
− | |||
− | <p> | ||
<div class="highlight-default notranslate"> | <div class="highlight-default notranslate"> | ||
<div class="highlight"> | <div class="highlight"> | ||
− | < | + | <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()</ | + | F('some_field').desc()</syntaxhighlight> |
</div> | </div> | ||
第81行: | 第75行: | ||
<div id="bitand" class="section"> | <div id="bitand" class="section"> | ||
− | === | + | === BitAnd === |
− | ; ''class'' < | + | ; ''<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> |
− | : | + | : 返回所有非空输入值的按位 <code>AND</code> 的 <code>int</code>,如果所有值都为空,则返回 <code>None</code>。 |
第90行: | 第84行: | ||
<div id="bitor" class="section"> | <div id="bitor" class="section"> | ||
− | === | + | === BitOr === |
− | ; ''class'' < | + | ; ''<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> |
− | : | + | : 返回所有非空输入值的按位 <code>OR</code> 的 <code>int</code>,如果所有值都为空,则返回 <code>None</code>。 |
第99行: | 第93行: | ||
<div id="booland" class="section"> | <div id="booland" class="section"> | ||
− | === | + | === BoolAnd === |
− | ; ''class'' < | + | ; ''<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> |
− | : | + | : 如果所有输入值都为真,则返回 <code>True</code>,如果所有值都为空或没有值,则返回 <code>None</code>,否则返回 <code>False</code>。 |
第108行: | 第102行: | ||
<div id="boolor" class="section"> | <div id="boolor" class="section"> | ||
− | === | + | === BoolOr === |
− | ; ''class'' < | + | ; ''<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> |
− | : | + | : 如果至少有一个输入值为真,则返回 <code>True</code>,如果所有值都为空或没有值,则返回 <code>None</code>,否则返回 <code>False</code>。 |
第117行: | 第111行: | ||
<div id="jsonbagg" class="section"> | <div id="jsonbagg" class="section"> | ||
− | === | + | === JSONBAgg === |
− | ; ''class'' < | + | ; ''<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> |
− | : | + | : 将输入值作为 <code>JSON</code> 数组返回。 需要 PostgreSQL ≥ 9.5。 |
第126行: | 第120行: | ||
<div id="stringagg" class="section"> | <div id="stringagg" class="section"> | ||
− | === | + | === StringAgg === |
<dl> | <dl> | ||
− | <dt>''class'' < | + | <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> | + | <dd><p>返回连接成字符串的输入值,由 <code>delimiter</code> 字符串分隔。</p> |
− | |||
<dl> | <dl> | ||
− | <dt>< | + | <dt><span class="sig-name descname"><span class="pre">delimiter</span></span></dt> |
− | <dd><p> | + | <dd><p>必需的参数。 必须是字符串。</p></dd></dl> |
<dl> | <dl> | ||
− | <dt>< | + | <dt><span class="sig-name descname"><span class="pre">distinct</span></span></dt> |
− | <dd><p> | + | <dd><p>一个可选的布尔参数,用于确定连接的值是否不同。 默认为 <code>False</code>。</p></dd></dl> |
− | |||
<dl> | <dl> | ||
− | <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> | + | <p>字段名称的可选字符串(带有指示降序的可选 <code>"-"</code> 前缀)或指定结果字符串中元素顺序的表达式(或字符串和/或表达式的元组或列表) .</p> |
− | + | <p>示例与 [[#django.contrib.postgres.aggregates.ArrayAgg.ordering|ArrayAgg.ordering]] 相同。</p></dd></dl> | |
− | |||
− | |||
− | <p> | ||
</dd></dl> | </dd></dl> | ||
第161行: | 第150行: | ||
<div id="aggregate-functions-for-statistics" class="section"> | <div id="aggregate-functions-for-statistics" class="section"> | ||
− | == | + | == 统计的聚合功能 == |
<div id="y-and-x" class="section"> | <div id="y-and-x" class="section"> | ||
− | === | + | === y 和 x === |
− | + | 所有这些函数的参数 <code>y</code> 和 <code>x</code> 可以是字段名称或返回数字数据的表达式。 两者都是必需的。 | |
− | |||
第174行: | 第162行: | ||
<div id="corr" class="section"> | <div id="corr" class="section"> | ||
− | === | + | === Corr === |
− | ; ''class'' < | + | ; ''<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> |
− | : | + | : 如果没有任何匹配的行,则以 <code>float</code> 或 <code>None</code> 的形式返回相关系数。 |
第183行: | 第171行: | ||
<div id="covarpop" class="section"> | <div id="covarpop" class="section"> | ||
− | === | + | === CovarPop === |
<dl> | <dl> | ||
− | <dt>''class'' < | + | <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> | + | <dd><p>如果没有任何匹配的行,则以 <code>float</code> 或 <code>None</code> 的形式返回总体协方差。</p> |
− | |||
<p>包含一个可选参数:</p> | <p>包含一个可选参数:</p> | ||
<dl> | <dl> | ||
− | <dt>< | + | <dt><span class="sig-name descname"><span class="pre">sample</span></span></dt> |
− | <dd><p> | + | <dd><p>默认情况下,<code>CovarPop</code> 返回总体总体协方差。 但是,如果 <code>sample=True</code>,返回值将是样本总体协方差。</p></dd></dl> |
− | |||
− | |||
</dd></dl> | </dd></dl> | ||
第201行: | 第186行: | ||
<div id="regravgx" class="section"> | <div id="regravgx" class="section"> | ||
− | === | + | === RegrAvgX === |
− | ; ''class'' < | + | ; ''<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> |
− | : | + | : 如果没有任何匹配的行,则以 <code>float</code> 或 <code>None</code> 的形式返回自变量 (<code>sum(x)/N</code>) 的平均值。 |
第210行: | 第195行: | ||
<div id="regravgy" class="section"> | <div id="regravgy" class="section"> | ||
− | === | + | === RegrAvgY === |
− | ; ''class'' < | + | ; ''<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> |
− | : | + | : 如果没有任何匹配的行,则以 <code>float</code> 或 <code>None</code> 的形式返回因变量 (<code>sum(y)/N</code>) 的平均值。 |
第219行: | 第204行: | ||
<div id="regrcount" class="section"> | <div id="regrcount" class="section"> | ||
− | === | + | === RegrCount === |
− | ; ''class'' < | + | ; ''<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> |
− | : | + | : 返回两个表达式都不为空的输入行数的 <code>int</code>。 |
第228行: | 第213行: | ||
<div id="regrintercept" class="section"> | <div id="regrintercept" class="section"> | ||
− | === | + | === RegrIntercept === |
− | ; ''class'' < | + | ; ''<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> |
− | : | + | : 如果没有任何匹配的行,则返回由 <code>(x, y)</code> 对确定的最小二乘拟合线性方程的 y 截距作为 <code>float</code> 或 <code>None</code>。 |
第237行: | 第222行: | ||
<div id="regrr2" class="section"> | <div id="regrr2" class="section"> | ||
− | === | + | === RegrR2 === |
− | ; ''class'' < | + | ; ''<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> |
− | : | + | : 如果没有任何匹配的行,则以 <code>float</code> 或 <code>None</code> 的形式返回相关系数的平方。 |
第246行: | 第231行: | ||
<div id="regrslope" class="section"> | <div id="regrslope" class="section"> | ||
− | === | + | === RegrSlope === |
− | ; ''class'' < | + | ; ''<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> |
− | : | + | : 如果没有任何匹配的行,则返回由 <code>(x, y)</code> 对确定的最小二乘拟合线性方程的斜率作为 <code>float</code> 或 <code>None</code>。 |
第255行: | 第240行: | ||
<div id="regrsxx" class="section"> | <div id="regrsxx" class="section"> | ||
− | === | + | === RegrSXX === |
− | ; ''class'' < | + | ; ''<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> |
− | : | + | : 如果没有任何匹配的行,则返回 <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"> | ||
− | === | + | === RegrSXY === |
− | ; ''class'' < | + | ; ''<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> |
− | : | + | : 如果没有任何匹配的行,则返回 <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"> | ||
− | === | + | === RegrSYY === |
− | ; ''class'' < | + | ; ''<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> |
− | : | + | : 如果没有任何匹配的行,则返回 <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"> | ||
− | == | + | == 使用实例: == |
− | + | 我们将使用此示例表: | |
<div class="highlight-default notranslate"> | <div class="highlight-default notranslate"> | ||
第292行: | 第277行: | ||
<div class="highlight"> | <div class="highlight"> | ||
− | < | + | <syntaxhighlight lang="python">| FIELD1 | FIELD2 | FIELD3 | |
|--------|--------|--------| | |--------|--------|--------| | ||
| foo | 1 | 13 | | | foo | 1 | 13 | | ||
| bar | 2 | (null) | | | bar | 2 | (null) | | ||
− | | test | 3 | 13 |</ | + | | test | 3 | 13 |</syntaxhighlight> |
</div> | </div> | ||
</div> | </div> | ||
− | + | 以下是一些通用聚合函数的示例: | |
<div class="highlight-default notranslate"> | <div class="highlight-default notranslate"> | ||
第307行: | 第292行: | ||
<div class="highlight"> | <div class="highlight"> | ||
− | < | + | <syntaxhighlight lang="python">>>> TestModel.objects.aggregate(result=StringAgg('field1', delimiter=';')) |
{'result': 'foo;bar;test'} | {'result': 'foo;bar;test'} | ||
− | + | >>> TestModel.objects.aggregate(result=ArrayAgg('field2')) | |
{'result': [1, 2, 3]} | {'result': [1, 2, 3]} | ||
− | + | >>> TestModel.objects.aggregate(result=ArrayAgg('field1')) | |
− | {'result': ['foo', 'bar', 'test']}</ | + | {'result': ['foo', 'bar', 'test']}</syntaxhighlight> |
</div> | </div> | ||
</div> | </div> | ||
− | + | 下一个示例显示了统计聚合函数的用法。 将不描述基础数学(例如,您可以在 [https://en.wikipedia.org/wiki/Regression_analysis wikipedia] 中阅读相关内容): | |
− | |||
− | [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"> | ||
− | < | + | <syntaxhighlight lang="python">>>> TestModel.objects.aggregate(count=RegrCount(y='field3', x='field2')) |
{'count': 2} | {'count': 2} | ||
− | + | >>> 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}</ | + | {'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 文档 中有更详细的描述。
笔记
所有函数都没有默认别名,因此您必须明确提供一个。 例如:
通用聚合函数
ArrayAgg
- class ArrayAgg(expression, distinct=False, filter=None, ordering=(), **extra)
返回一个值的列表,包括空值,连接成一个数组。
- distinct
一个可选的布尔参数,用于确定数组值是否不同。 默认为
False
。
- ordering
2.2 版中的新功能。
字段名称的可选字符串(带有指示降序的可选
"-"
前缀)或指定结果列表中元素顺序的表达式(或字符串和/或表达式的元组或列表) .例子:
BitAnd
- class BitAnd(expression, filter=None, **extra)
- 返回所有非空输入值的按位
AND
的int
,如果所有值都为空,则返回None
。
BitOr
- class BitOr(expression, filter=None, **extra)
- 返回所有非空输入值的按位
OR
的int
,如果所有值都为空,则返回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
所有这些函数的参数 y
和 x
可以是字段名称或返回数字数据的表达式。 两者都是必需的。
Corr
- class Corr(y, x, filter=None)
- 如果没有任何匹配的行,则以
float
或None
的形式返回相关系数。
CovarPop
- class CovarPop(y, x, sample=False, filter=None)
如果没有任何匹配的行,则以
float
或None
的形式返回总体协方差。包含一个可选参数:
- sample
默认情况下,
CovarPop
返回总体总体协方差。 但是,如果sample=True
,返回值将是样本总体协方差。
RegrAvgX
- class RegrAvgX(y, x, filter=None)
- 如果没有任何匹配的行,则以
float
或None
的形式返回自变量 (sum(x)/N
) 的平均值。
RegrAvgY
- class RegrAvgY(y, x, filter=None)
- 如果没有任何匹配的行,则以
float
或None
的形式返回因变量 (sum(y)/N
) 的平均值。
RegrCount
- class RegrCount(y, x, filter=None)
- 返回两个表达式都不为空的输入行数的
int
。
RegrIntercept
- class RegrIntercept(y, x, filter=None)
- 如果没有任何匹配的行,则返回由
(x, y)
对确定的最小二乘拟合线性方程的 y 截距作为float
或None
。
RegrR2
- class RegrR2(y, x, filter=None)
- 如果没有任何匹配的行,则以
float
或None
的形式返回相关系数的平方。
RegrSlope
- class RegrSlope(y, x, filter=None)
- 如果没有任何匹配的行,则返回由
(x, y)
对确定的最小二乘拟合线性方程的斜率作为float
或None
。
RegrSXX
- class RegrSXX(y, x, filter=None)
- 如果没有任何匹配的行,则返回
sum(x^2) - sum(x)^2/N
(自变量的“平方和”)作为float
或None
。
RegrSXY
- class RegrSXY(y, x, filter=None)
- 如果没有任何匹配的行,则返回
sum(x*y) - sum(x) * sum(y)/N
(独立时间因变量的“乘积之和”)作为float
或None
。
RegrSYY
- class RegrSYY(y, x, filter=None)
- 如果没有任何匹配的行,则返回
sum(y^2) - sum(y)^2/N
(因变量的“平方和”)作为float
或None
。