| ÐокÑменÑаÑÐ¸Ñ Ð¿Ð¾ PostgreSQL 9.4.1 | |||
|---|---|---|---|
| ÐÑед. | УÑÐ¾Ð²ÐµÐ½Ñ Ð²ÑÑе | Ðлава 9. ФÑнкÑии и опеÑаÑоÑÑ | След. |
9.20. ÐгÑегаÑнÑе ÑÑнкÑии
ÐгÑегаÑнÑе ÑÑнкÑии полÑÑаÑÑ ÐµÐ´Ð¸Ð½ÑÑвеннÑй ÑезÑлÑÑÐ°Ñ Ð¸Ð· набоÑа Ð²Ñ Ð¾Ð´Ð½ÑÑ Ð·Ð½Ð°Ñений. ÐÑÑÑоеннÑе обÑÑнÑе агÑегаÑнÑе ÑÑнкÑии пеÑеÑиÑÐ»ÐµÐ½Ñ Ð² ТаблиÑе 9-49 и ТаблиÑе 9-50, а ÑоÑÑиÑÑÑÑие агÑегаÑнÑе ÑÑнкÑии — в ТаблиÑе 9-51 и ТаблиÑе 9-52. ÐÑобенноÑÑи ÑинÑакÑиÑа агÑегаÑнÑÑ ÑÑнкÑий ÑазÑÑÑнÑÑÑÑÑ Ð² ÐодÑазделе 4.2.7. Ðа дополниÑелÑной вводной инÑоÑмаÑией обÑаÑиÑеÑÑ Ðº Ð Ð°Ð·Ð´ÐµÐ»Ñ 2.7.
ТаблиÑа 9-49. ÐгÑегаÑнÑе ÑÑнкÑии обÑего назнаÑениÑ
| ФÑнкÑÐ¸Ñ | Ð¢Ð¸Ð¿Ñ Ð°ÑгÑменÑа | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|---|
array_agg(вÑÑажение) | any | маÑÑив ÑлеменÑов Ñ Ñипом аÑгÑменÑа | Ð²Ñ Ð¾Ð´Ð½Ñе знаÑениÑ, вклÑÑÐ°Ñ NULL, обÑединÑÑÑÑÑ Ð² маÑÑив |
avg(вÑÑажение) | smallint, int, bigint, real, double precision, numeric или interval | numeric Ð´Ð»Ñ Ð»ÑбÑÑ ÑелоÑиÑленнÑÑ Ð°ÑгÑменÑов, double precision Ð´Ð»Ñ Ð°ÑгÑменÑов Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей ÑоÑкой, в пÑоÑивном ÑлÑÑае Ñип даннÑÑ Ð°ÑгÑменÑа | аÑиÑмеÑиÑеÑкое ÑÑеднее Ð´Ð»Ñ Ð²ÑÐµÑ Ð²Ñ Ð¾Ð´Ð½ÑÑ Ð·Ð½Ð°Ñений |
bit_and(вÑÑажение) | smallint, int, bigint или bit | ÑÐ¾Ñ Ð¶Ðµ, ÑÑо и Ñип аÑгÑменÑа | побиÑовое Ð Ð´Ð»Ñ Ð²ÑÐµÑ Ð²Ñ Ð¾Ð´Ð½ÑÑ Ð·Ð½Ð°Ñений, не ÑавнÑÑ NULL, или NULL, еÑли ÑÐ°ÐºÐ¸Ñ Ð½ÐµÑ |
bit_or(вÑÑажение) | smallint, int, bigint или bit | ÑÐ¾Ñ Ð¶Ðµ, ÑÑо и Ñип аÑгÑменÑа | побиÑовое ÐÐÐ Ð´Ð»Ñ Ð²ÑÐµÑ Ð²Ñ Ð¾Ð´Ð½ÑÑ Ð·Ð½Ð°Ñений, не ÑавнÑÑ NULL, или NULL, еÑли ÑÐ°ÐºÐ¸Ñ Ð½ÐµÑ |
bool_and(вÑÑажение) | bool | bool | true, еÑли вÑе Ð²Ñ Ð¾Ð´Ð½Ñе знаÑÐµÐ½Ð¸Ñ ÑÐ°Ð²Ð½Ñ true, и false в пÑоÑивном ÑлÑÑае |
bool_or(вÑÑажение) | bool | bool | true, еÑли Ñ Ð¾ÑÑ Ð±Ñ Ð¾Ð´Ð½Ð¾ Ð²Ñ Ð¾Ð´Ð½Ð¾Ðµ знаÑение Ñавно true, и false в пÑоÑивном ÑлÑÑае |
count(*) | bigint | колиÑеÑÑво Ð²Ñ Ð¾Ð´Ð½ÑÑ ÑÑÑок | |
count(вÑÑажение) | any | bigint | колиÑеÑÑво Ð²Ñ Ð¾Ð´Ð½ÑÑ ÑÑÑок, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ Ð·Ð½Ð°Ñение вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ Ñавно NULL |
every(вÑÑажение) | bool | bool | Ñиноним bool_and |
json_agg(вÑÑажение) | any | json | агÑегиÑÑÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð² виде маÑÑива JSON |
json_object_agg(имÑ, знаÑение) | (any, any) | json | агÑегиÑÑÐµÑ Ð¿Ð°ÑÑ Ð¸Ð¼Ñ/знаÑение в виде обÑекÑа JSON |
max(вÑÑажение) | лÑбой маÑÑив, ÑиÑло, ÑÑÑока или даÑа/вÑÐµÐ¼Ñ | ÑÐ¾Ñ Ð¶Ðµ, ÑÑо и Ñип аÑгÑменÑа | макÑималÑное знаÑение вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑÑеди вÑÐµÑ Ð²Ñ Ð¾Ð´Ð½ÑÑ Ð´Ð°Ð½Ð½ÑÑ |
min(вÑÑажение) | лÑбой маÑÑив, ÑиÑло, ÑÑÑока или даÑа/вÑÐµÐ¼Ñ | ÑÐ¾Ñ Ð¶Ðµ, ÑÑо и Ñип аÑгÑменÑа | минималÑное знаÑение вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑÑеди вÑÐµÑ Ð²Ñ Ð¾Ð´Ð½ÑÑ Ð´Ð°Ð½Ð½ÑÑ |
string_agg(вÑÑажение, ÑазделиÑелÑ) | (text, text) или (bytea, bytea) | ÑÐ¾Ñ Ð¶Ðµ, ÑÑо и ÑÐ¸Ð¿Ñ Ð°ÑгÑменÑов | Ð²Ñ Ð¾Ð´Ð½Ñе даннÑе ÑкладÑваÑÑÑÑ Ð² ÑÑÑÐ¾ÐºÑ ÑеÑез заданнÑй ÑазделиÑÐµÐ»Ñ |
sum(вÑÑажение) | smallint, int, bigint, real, double precision, numeric, interval или money | bigint Ð´Ð»Ñ Ð°ÑгÑменÑов smallint или int, numeric Ð´Ð»Ñ Ð°ÑгÑменÑов bigint, и Ñип аÑгÑменÑа в оÑÑалÑнÑÑ ÑлÑÑаÑÑ | ÑÑмма знаÑений вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ вÑем Ð²Ñ Ð¾Ð´Ð½Ñм даннÑм |
xmlagg(вÑÑажение) | xml | xml | Ñоединение XML-знаÑений (Ñм. Ñакже ÐодÑаздел 9.14.1.7) |
СледÑÐµÑ Ð·Ð°Ð¼ÐµÑиÑÑ, ÑÑо за иÑклÑÑением count, вÑе ÑÑи ÑÑнкÑии возвÑаÑаÑÑ NULL, еÑли Ð´Ð»Ñ Ð½Ð¸Ñ
не бÑла вÑбÑана ни одна ÑÑÑока. Ð ÑаÑÑноÑÑи, ÑÑнкÑÐ¸Ñ sum, не полÑÑив ÑÑÑок, возвÑаÑÐ°ÐµÑ NULL, а не 0, как можно бÑло Ð±Ñ Ð¾Ð¶Ð¸Ð´Ð°ÑÑ, и array_agg в ÑÑом ÑлÑÑае возвÑаÑÐ°ÐµÑ NULL, а не пÑÑÑой маÑÑив. ÐÑли необÑ
одимо, подÑÑавиÑÑ Ð² ÑезÑлÑÑÐ°Ñ 0 или пÑÑÑой маÑÑив вмеÑÑо NULL можно Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑнкÑии coalesce.
ÐамеÑание: ÐÑÐ»ÐµÐ²Ñ Ð°Ð³ÑегаÑнÑе ÑÑнкÑии
bool_andиbool_orÑооÑвеÑÑÑвÑÑÑ ÑÑандаÑÑнÑм SQL-агÑегаÑамeveryиanyилиsome. ЧÑо каÑаеÑÑÑanyиsome, по ÑÑандаÑÑÑ Ð¸Ñ ÑинÑакÑÐ¸Ñ Ð´Ð¾Ð¿ÑÑÐºÐ°ÐµÑ Ð½ÐµÐºÐ¾ÑоÑÑÑ Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°ÑноÑÑÑ:SELECT b1 = ANY((SELECT b2 FROM t2 ...)) FROM t1 ...;ÐдеÑÑ
ANYможно ÑаÑÑмаÑÑиваÑÑ Ð¸ как обÑÑвление подзапÑоÑа, и как агÑегаÑнÑÑ ÑÑнкÑиÑ, еÑли ÑÑÐ¾Ñ Ð¿Ð¾Ð´Ð·Ð°Ð¿ÑÐ¾Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ Ð¾Ð´Ð½Ñ ÑÑÑÐ¾ÐºÑ Ñ Ð±ÑлевÑм знаÑением. Таким обÑазом, ÑÑим агÑегаÑнÑм ÑÑнкÑиÑм нелÑÐ·Ñ Ð±Ñло даÑÑ ÑÑандаÑÑнÑе имена.
ÐамеÑание: ÐолÑзоваÑели Ñ Ð¾Ð¿ÑÑом иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´ÑÑÐ³Ð¸Ñ Ð¡Ð£ÐÐ SQL могÑÑ Ð±ÑÑÑ Ð½ÐµÐ´Ð¾Ð²Ð¾Ð»ÑÐ½Ñ ÑкоÑоÑÑÑÑ Ð°Ð³ÑегаÑной ÑÑнкÑии
count, когда она пÑименÑеÑÑÑ ÐºÐ¾ вÑей ÑаблиÑе. ÐодобнÑй запÑоÑ:SELECT count(*) FROM sometable;поÑÑебÑÐµÑ Ð·Ð°ÑÑÐ°Ñ Ð² колиÑеÑÑве, пÑопоÑÑионалÑном ÑазмеÑÑ ÑаблиÑÑ: PostgreSQL пÑидÑÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð¿ÑоÑканиÑоваÑÑ Ð»Ð¸Ð±Ð¾ вÑÑ ÑаблиÑÑ, либо один из индекÑов, вклÑÑаÑÑий вÑе ÐµÑ ÑÑÑоки.
ÐгÑегаÑнÑе ÑÑнкÑии array_agg, json_agg, json_object_agg, string_agg и xmlagg Ñак же, как и подобнÑе полÑзоваÑелÑÑкие агÑегаÑнÑе ÑÑнкÑии, вÑдаÑÑ ÑазнÑе по ÑмÑÑÐ»Ñ ÑезÑлÑÑаÑÑ Ð² завиÑимоÑÑи Ð¾Ñ Ð¿Ð¾ÑÑдка вÑ
однÑÑ
даннÑÑ
. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾ÑÑдок не опÑеделÑн, но его можно задаÑÑ, дополнив вÑзов агÑегаÑной ÑÑнкÑии пÑедложением ORDER BY, как опиÑано в ÐодÑазделе 4.2.7. ÐÑжного ÑезÑлÑÑаÑа Ñакже можно добиÑÑÑÑ, пеÑедав агÑегаÑной ÑÑнкÑии ÑезÑлÑÑÐ°Ñ Ð¿Ð¾Ð´Ð·Ð°Ð¿ÑоÑа Ñ ÑоÑÑиÑовкой. ÐапÑимеÑ:
SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab;
Ðо ÑÑÑиÑе, ÑÑо ÑÑÐ¾Ñ ÑинÑакÑÐ¸Ñ Ð½Ðµ ÑооÑвеÑÑÑвÑÐµÑ ÑÑандаÑÑÑ SQL и не бÑÐ´ÐµÑ ÑабоÑаÑÑ Ð² дÑÑÐ³Ð¸Ñ Ð¡Ð£ÐÐ.
РТаблиÑе 9-50 пеÑеÑиÑÐ»ÐµÐ½Ñ Ð°Ð³ÑегаÑнÑе ÑÑнкÑии, обÑÑно пÑименÑемÑе в ÑÑаÑиÑÑиÑеÑком анализе. (Ðни вÑÐ´ÐµÐ»ÐµÐ½Ñ Ð¿ÑоÑÑо Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð½Ðµ загÑомождаÑÑ ÑпиÑок наиболее попÑлÑÑнÑÑ Ð°Ð³ÑегаÑнÑÑ ÑÑнкÑий.) Ð Ð¸Ñ Ð¾Ð¿Ð¸Ñании под N подÑазÑмеваеÑÑÑ ÑиÑло Ð²Ñ Ð¾Ð´Ð½ÑÑ ÑÑÑок, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ Ð²Ñ Ð¾Ð´Ð½Ñе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ ÑÐ°Ð²Ð½Ñ NULL. ÐÑе ÑÑи ÑÑнкÑии возвÑаÑаÑÑ NULL во вÑÐµÑ ÑлÑÑаÑÑ , когда вÑÑиÑление беÑÑмÑÑленно, напÑимеÑ, когда N Ñавно 0.
ТаблиÑа 9-50. ÐгÑегаÑнÑе ÑÑнкÑии Ð´Ð»Ñ ÑÑаÑиÑÑиÑеÑÐºÐ¸Ñ Ð²ÑÑиÑлений
| ФÑнкÑÐ¸Ñ | Тип аÑгÑменÑа | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|---|
corr(Y, X) | double precision | double precision | коÑÑÑиÑÐ¸ÐµÐ½Ñ ÐºÐ¾ÑÑелÑÑии |
covar_pop(Y, X) | double precision | double precision | коваÑиаÑÐ¸Ñ ÑовокÑпноÑÑи |
covar_samp(Y, X) | double precision | double precision | коваÑиаÑÐ¸Ñ Ð²ÑбоÑки |
regr_avgx(Y, X) | double precision | double precision | ÑÑеднее незавиÑимой пеÑеменной (sum(X)/N) |
regr_avgy(Y, X) | double precision | double precision | ÑÑеднее завиÑимой пеÑеменной (sum(Y)/N) |
regr_count(Y, X) | double precision | bigint | ÑиÑло Ð²Ñ Ð¾Ð´Ð½ÑÑ ÑÑÑок, в коÑоÑÑÑ Ð¾Ð±Ð° вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ NULL |
regr_intercept(Y, X) | double precision | double precision | пеÑеÑеÑение Ñ Ð¾ÑÑÑ OY линии, полÑÑенной меÑодом наименÑÑÐ¸Ñ ÐºÐ²Ð°Ð´ÑаÑов по даннÑм (X, Y) |
regr_r2(Y, X) | double precision | double precision | квадÑÐ°Ñ ÐºÐ¾ÑÑÑиÑиенÑа коÑÑелÑÑии |
regr_slope(Y, X) | double precision | double precision | наклон линии, полÑÑенной меÑодом наименÑÑÐ¸Ñ ÐºÐ²Ð°Ð´ÑаÑов по даннÑм (X, Y) |
regr_sxx(Y, X) | double precision | double precision | sum(X^2) - sum(X)^2/N ("ÑÑмма квадÑаÑов" незавиÑимой пеÑеменной) |
regr_sxy(Y, X) | double precision | double precision | sum(X*Y) - sum(X) * sum(Y)/N ("ÑÑмма пÑоизведений" незавиÑимÑÑ Ð¸ завиÑимÑÑ Ð¿ÐµÑеменнÑÑ ) |
regr_syy(Y, X) | double precision | double precision | sum(Y^2) - sum(Y)^2/N ("ÑÑмма квадÑаÑов" завиÑимой пеÑеменной) |
stddev(вÑÑажение) | smallint, int, bigint, real, double precision или numeric | double precision Ð´Ð»Ñ Ð°ÑгÑменÑов Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей ÑоÑкой, numeric Ð´Ð»Ñ Ð¾ÑÑалÑнÑÑ | ÑоÑ
ÑанивÑийÑÑ Ñиноним stddev_samp |
stddev_pop(вÑÑажение) | smallint, int, bigint, real, double precision или numeric | double precision Ð´Ð»Ñ Ð°ÑгÑменÑов Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей ÑоÑкой, numeric Ð´Ð»Ñ Ð¾ÑÑалÑнÑÑ | ÑÑандаÑÑное оÑклонение по генеÑалÑной ÑовокÑпноÑÑи Ð²Ñ Ð¾Ð´Ð½ÑÑ Ð·Ð½Ð°Ñений |
stddev_samp(вÑÑажение) | smallint, int, bigint, real, double precision или numeric | double precision Ð´Ð»Ñ Ð°ÑгÑменÑов Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей ÑоÑкой, numeric Ð´Ð»Ñ Ð¾ÑÑалÑнÑÑ | ÑÑандаÑÑное оÑклонение по вÑбоÑке Ð²Ñ Ð¾Ð´Ð½ÑÑ Ð·Ð½Ð°Ñений |
variance(вÑÑажение) | smallint, int, bigint, real, double precision или numeric | double precision Ð´Ð»Ñ Ð°ÑгÑменÑов Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей ÑоÑкой, numeric Ð´Ð»Ñ Ð¾ÑÑалÑнÑÑ | ÑоÑ
ÑанивÑийÑÑ Ñиноним var_samp |
var_pop(вÑÑажение) | smallint, int, bigint, real, double precision или numeric | double precision Ð´Ð»Ñ Ð°ÑгÑменÑов Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей ÑоÑкой, numeric Ð´Ð»Ñ Ð¾ÑÑалÑнÑÑ | диÑпеÑÑÐ¸Ñ Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑалÑной ÑовокÑпноÑÑи Ð²Ñ Ð¾Ð´Ð½ÑÑ Ð·Ð½Ð°Ñений (квадÑÐ°Ñ ÑÑандаÑÑного оÑклонениÑ) |
var_samp(вÑÑажение) | smallint, int, bigint, real, double precision или numeric | double precision Ð´Ð»Ñ Ð°ÑгÑменÑов Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей ÑоÑкой, numeric Ð´Ð»Ñ Ð¾ÑÑалÑнÑÑ | диÑпеÑÑÐ¸Ñ Ð¿Ð¾ вÑбоÑке Ð´Ð»Ñ Ð²Ñ Ð¾Ð´Ð½ÑÑ Ð·Ð½Ð°Ñений (квадÑÐ°Ñ Ð¾ÑÐºÐ»Ð¾Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ вÑбоÑке) |
РТаблиÑе 9-51 Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ Ð½ÐµÐºÐ¾ÑоÑÑе агÑегаÑнÑе ÑÑнкÑии, иÑполÑзÑÑÑие ÑинÑакÑÐ¸Ñ ÑоÑÑиÑÑÑÑÐ¸Ñ Ð°Ð³ÑегаÑнÑÑ ÑÑнкÑий. Ðногда Ñакие ÑÑнкÑии ÑÑнкÑиÑми назÑваÑÑ ÑÑнкÑиÑми "обÑаÑного ÑаÑпÑеделениÑ".
ТаблиÑа 9-51. СоÑÑиÑÑÑÑие агÑегаÑнÑе ÑÑнкÑии
| ФÑнкÑÐ¸Ñ | Тип непоÑÑедÑÑвенного аÑгÑменÑа | Тип агÑегиÑованного аÑгÑменÑа | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|---|---|
mode() WITHIN GROUP (ORDER BY вÑÑажение_ÑоÑÑиÑовки) | лÑбой ÑоÑÑиÑÑемÑй Ñип | ÑÐ¾Ñ Ð¶Ðµ, ÑÑо Ñ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑоÑÑиÑовки | возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение, наиболее ÑаÑÑо вÑÑÑеÑаÑÑееÑÑ Ð²Ð¾ Ð²Ñ Ð¾Ð´Ð½ÑÑ Ð´Ð°Ð½Ð½ÑÑ (еÑли одинаково ÑаÑÑо вÑÑÑеÑаÑÑÑÑ Ð½ÐµÑколÑко знаÑений, пÑоизволÑно вÑбиÑаеÑÑÑ Ð¿ÐµÑвое из Ð½Ð¸Ñ ) | |
percentile_cont(дÑобÑ) WITHIN GROUP (ORDER BY вÑÑажение_ÑоÑÑиÑовки) | double precision | double precision или interval | ÑÐ¾Ñ Ð¶Ðµ, ÑÑо Ñ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑоÑÑиÑовки | непÑеÑÑвнÑй пеÑÑенÑилÑ: возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение, ÑооÑвеÑÑÑвÑÑÑее заданной дÑоби по поÑÑдкÑ, инÑеÑполиÑÑÑ ÑоÑедние Ð²Ñ Ð¾Ð´Ð½Ñе знаÑениÑ, еÑли Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ |
percentile_cont(дÑоби) WITHIN GROUP (ORDER BY вÑÑажение_ÑоÑÑиÑовки) | double precision[] | double precision или interval | маÑÑив Ñипа вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑоÑÑиÑовки | множеÑÑвеннÑй непÑеÑÑвнÑй пеÑÑенÑилÑ: возвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив ÑезÑлÑÑаÑов, ÑооÑвеÑÑÑвÑÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑм в паÑамеÑÑе дÑоби (Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑлеменÑа не NULL подÑÑавлÑеÑÑÑ Ð·Ð½Ð°Ñение, ÑооÑвеÑÑÑвÑÑÑее Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¿ÐµÑÑенÑилÑ) |
percentile_disc(дÑобÑ) WITHIN GROUP (ORDER BY вÑÑажение_ÑоÑÑиÑовки) | double precision | лÑбой ÑоÑÑиÑÑемÑй Ñип | ÑÐ¾Ñ Ð¶Ðµ, ÑÑо Ñ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑоÑÑиÑовки | диÑкÑеÑнÑй пеÑÑенÑилÑ: возвÑаÑÐ°ÐµÑ Ð¿ÐµÑвое знаÑение из Ð²Ñ Ð¾Ð´Ð½ÑÑ Ð´Ð°Ð½Ð½ÑÑ , позиÑÐ¸Ñ ÐºÐ¾ÑоÑого по поÑÑÐ´ÐºÑ Ñавна или пÑевоÑÑ Ð¾Ð´Ð¸Ñ ÑказаннÑÑ Ð´ÑÐ¾Ð±Ñ |
percentile_disc(дÑоби) WITHIN GROUP (ORDER BY вÑÑажение_ÑоÑÑиÑовки) | double precision[] | лÑбой ÑоÑÑиÑÑемÑй Ñип | маÑÑив Ñипа вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑоÑÑиÑовки | множеÑÑвеннÑй диÑкÑеÑнÑй пеÑÑенÑилÑ: возвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив ÑезÑлÑÑаÑов, ÑооÑвеÑÑÑвÑÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑм в паÑамеÑÑе дÑоби (Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑлеменÑа не NULL подÑÑавлÑеÑÑÑ Ð²Ñ Ð¾Ð´Ð½Ð¾Ðµ знаÑение, ÑооÑвеÑÑÑвÑÑÑее Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¿ÐµÑÑенÑилÑ) |
ÐÑе агÑегаÑнÑе ÑÑнкÑии, пеÑеÑиÑленнÑе в ТаблиÑе 9-51, игноÑиÑÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ NULL пÑи ÑоÑÑиÑовке даннÑÑ . ÐÐ»Ñ ÑÑнкÑий, пÑинимаÑÑÐ¸Ñ Ð¿Ð°ÑамеÑÑ Ð´ÑобÑ, знаÑение ÑÑого паÑамеÑÑа должно бÑÑÑ Ð¾Ñ 0 до 1; в пÑоÑивном ÑлÑÑае Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¾Ñибка. Ðднако, еÑли в ÑÑом паÑамеÑÑе пеÑедаÑÑÑÑ NULL, ÑÑи ÑÑнкÑии пÑоÑÑо вÑдаÑÑ NULL.
ÐÑе агÑегаÑнÑе ÑÑнкÑии, пеÑеÑиÑленнÑе в ТаблиÑе 9-52, ÑвÑÐ·Ð°Ð½Ñ Ñ Ð¾Ð´Ð½Ð¾Ð¸Ð¼ÑннÑми оконнÑми ÑÑнкÑиÑми, опÑеделÑннÑми в Разделе 9.21. Ркаждом ÑлÑÑае Ð¸Ñ ÑезÑлÑÑÐ°Ñ — знаÑение, коÑоÑое веÑнÑла Ð±Ñ ÑвÑÐ·Ð°Ð½Ð½Ð°Ñ Ð¾ÐºÐ¾Ð½Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð´Ð»Ñ "гипоÑеÑиÑеÑкой" ÑÑÑоки, полÑÑенной из аÑгÑменÑов, еÑли Ð±Ñ ÑÐ°ÐºÐ°Ñ ÑÑÑока бÑла добавлена в ÑоÑÑиÑованнÑÑ Ð³ÑÑÐ¿Ð¿Ñ ÑÑÑок, коÑоÑÑÑ Ð¾Ð±ÑазÑÑÑ ÑоÑÑиÑованнÑе_аÑгÑменÑÑ.
ТаблиÑа 9-52. ÐипоÑезиÑÑÑÑие агÑегаÑнÑе ÑÑнкÑии
| ФÑнкÑÐ¸Ñ | Тип непоÑÑедÑÑвенного аÑгÑменÑа | Тип агÑегиÑованного аÑгÑменÑа | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|---|---|
rank(аÑгÑменÑÑ) WITHIN GROUP (ORDER BY ÑоÑÑиÑованнÑе_аÑгÑменÑÑ) | VARIADIC "any" | VARIADIC "any" | bigint | Ñанг гипоÑеÑиÑеÑкой ÑÑÑоки, Ñ Ð¿ÑопÑÑками повÑоÑÑÑÑÐ¸Ñ ÑÑ ÑÑÑок |
dense_rank(аÑгÑменÑÑ) WITHIN GROUP (ORDER BY ÑоÑÑиÑованнÑе_аÑгÑменÑÑ) | VARIADIC "any" | VARIADIC "any" | bigint | Ñанг гипоÑеÑиÑеÑкой ÑÑÑоки, без пÑопÑÑков |
percent_rank(аÑгÑменÑÑ) WITHIN GROUP (ORDER BY ÑоÑÑиÑованнÑе_аÑгÑменÑÑ) | VARIADIC "any" | VARIADIC "any" | double precision | оÑноÑиÑелÑнÑй Ñанг гипоÑеÑиÑеÑкой ÑÑÑоки, Ð¾Ñ 0 до 1 |
cume_dist(аÑгÑменÑÑ) WITHIN GROUP (ORDER BY ÑоÑÑиÑованнÑе_аÑгÑменÑÑ) | VARIADIC "any" | VARIADIC "any" | double precision | оÑноÑиÑелÑнÑй Ñанг гипоÑеÑиÑеÑкой ÑÑÑоки, Ð¾Ñ 1/N до 1 |
ÐÐ»Ñ Ð²ÑÐµÑ ÑÑÐ¸Ñ Ð³Ð¸Ð¿Ð¾ÑезиÑÑÑÑÐ¸Ñ Ð°Ð³ÑегаÑнÑÑ ÑÑнкÑий непоÑÑедÑÑвеннÑе аÑгÑменÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑооÑвеÑÑÑвоваÑÑ (по колиÑеÑÑÐ²Ñ Ð¸ ÑипÑ) ÑоÑÑиÑованнÑм_аÑгÑменÑам. РоÑлиÑие Ð¾Ñ Ð²ÑÑÑоеннÑÑ Ð°Ð³ÑегаÑнÑÑ ÑÑнкÑий, они не ÑвлÑÑÑÑÑ ÑÑÑогими, Ñо еÑÑÑ Ð½Ðµ оÑбÑаÑÑваÑÑ Ð²Ñ Ð¾Ð´Ð½Ñе ÑÑÑоки, ÑодеÑжаÑие NULL. ÐнаÑÐµÐ½Ð¸Ñ NULL ÑоÑÑиÑÑÑÑÑÑ ÑоглаÑно пÑавилÑ, ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ Ð² пÑедложении ORDER BY.
| ÐÑед. | ÐаÑало | След. |
| ÐиапазоннÑе ÑÑнкÑии и опеÑаÑоÑÑ | УÑÐ¾Ð²ÐµÐ½Ñ Ð²ÑÑе | ÐконнÑе ÑÑнкÑии |