Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1YDZCy-0005rx-Oj for pgsql-docs@arkaria.postgresql.org; Tue, 20 Jan 2015 13:51:04 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1YDZCw-00039E-RC for pgsql-docs@arkaria.postgresql.org; Tue, 20 Jan 2015 13:51:02 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1YDZCv-000396-Sb for pgsql-docs@postgresql.org; Tue, 20 Jan 2015 13:51:01 +0000 Received: from mail-la0-x22c.google.com ([2a00:1450:4010:c03::22c]) by magus.postgresql.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.80) (envelope-from ) id 1YDZCq-0001tj-Db for pgsql-docs@postgresql.org; Tue, 20 Jan 2015 13:51:00 +0000 Received: by mail-la0-f44.google.com with SMTP id s18so1080665lam.3 for ; Tue, 20 Jan 2015 05:50:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:from:date:message-id:subject:to:content-type; bh=4N3d0B7UmNkC9VJ9RqO+hxR8C5bKfU340/CA3+DrIgw=; b=IySwYKzUC+7iq7iEvG8G91To+bVCJOs4Bc7H16JqYYWtStpwXS9AbLdsRIw/bsCRIW 95NwHnmjE6UnYpbQgkqc7qP3GKwZJ4uZR/m2DfffYAuqGgve8Z05K2vuyInxOPhBbgC0 bm2pqPFDDFso/8BAlm0iT+NLezL8xE5nzRDuIKDa02683m1Wenzd6Jo+xzwNIKy+aO1b AgOM0p9pHcDeLlk8EfOCHyrtdxIXQ72st/zIj09eU8gW4iYpmEOdOF3NOh+Td7lVyFfA jPrJyMcV+AmtT5rx5AkyG9pkwRLAybyERgEX7S4APg/hhlsGOH0KsS7g8S3fDZj/+iup IvKg== X-Received: by 10.112.133.4 with SMTP id oy4mr38318276lbb.83.1421761853183; Tue, 20 Jan 2015 05:50:53 -0800 (PST) MIME-Version: 1.0 Received: by 10.25.22.166 with HTTP; Tue, 20 Jan 2015 05:50:22 -0800 (PST) From: Thom Brown Date: Tue, 20 Jan 2015 13:50:22 +0000 X-Google-Sender-Auth: w1cQc_4bdxVRm2AmgAui8wGF4YA Message-ID: Subject: Aggregate expression syntax To: pgsql-docs Content-Type: multipart/mixed; boundary=047d7b33dc5e37217b050d15baa8 X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-docs Precedence: bulk Sender: pgsql-docs-owner@postgresql.org --047d7b33dc5e37217b050d15baa8 Content-Type: multipart/alternative; boundary=047d7b33dc5e372167050d15baa6 --047d7b33dc5e372167050d15baa6 Content-Type: text/plain; charset=UTF-8 Hi all, Looking at the syntax for aggregate expressions in the docs, it seems the first three forms could perhaps be merged since the ALL and DISTINCT keywords are effectively optional. Currently: aggregate_name (expression [ , ... ] [ order_by_clause ] ) [ FILTER ( WHERE filter_clause ) ] aggregate_name (ALL expression [ , ... ] [ order_by_clause ] ) [ FILTER ( WHERE filter_clause ) ] aggregate_name (DISTINCT expression [ , ... ] [ order_by_clause ] ) [ FILTER ( WHERE filter_clause ) ] Proposed: aggregate_name ( [ ALL | DISTINCT ] expression [ , ... ] [ order_by_clause ] ) [ FILTER ( WHERE filter_clause ) ] I've also found a precedent for this on the SELECT statement page: [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ] Patch attached with the proposed change. Opinions? Thom --047d7b33dc5e372167050d15baa6 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi all,

Looking at the syntax for aggregate ex= pressions in the docs, it seems the first three forms could perhaps be merg= ed since the ALL and DISTINCT keywords are effectively optional.

Cur= rently:

aggregate_name (expression [ , ... ] [ order_by_clause ] ) [= FILTER ( WHERE filter_clause ) ]
aggregate_name (ALL expression [ , ...= ] [ order_by_clause ] ) [ FILTER ( WHERE filter_clause ) ]
aggregate_na= me (DISTINCT expression [ , ... ] [ order_by_clause ] ) [ FILTER ( WHERE fi= lter_clause ) ]

Proposed:

aggregate_name ( [ ALL | DIST= INCT ] expression [ , ... ] [ order_by_clause ] ) [ FILTER ( WHERE filter_c= lause ) ]

I've also found a p= recedent for this on the SELECT statement page:

[ { UNION | INTERSEC= T | EXCEPT } [ ALL | DISTINCT ] select ]

Patch= attached with the proposed change.

Opinions?

Thom
--047d7b33dc5e372167050d15baa6-- --047d7b33dc5e37217b050d15baa8 Content-Type: text/x-patch; charset=US-ASCII; name="agg_exp_docs.patch" Content-Disposition: attachment; filename="agg_exp_docs.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i55c7ljp0 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbCBiL2RvYy9z cmMvc2dtbC9zeW50YXguc2dtbAppbmRleCA0YjgxYjA4Li40ZjhhNDNiIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3ludGF4LnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3N5bnRheC5zZ21sCkBAIC0xNTc0LDkgKzE1NzQsNyBAQCBz cXJ0KDIpCiAgICAgc3ludGF4IG9mIGFuIGFnZ3JlZ2F0ZSBleHByZXNzaW9u IGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogCiA8c3lub3BzaXM+Ci08cmVw bGFjZWFibGU+YWdncmVnYXRlX25hbWU8L3JlcGxhY2VhYmxlPiAoPHJlcGxh Y2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBbICwgLi4uIF0gWyA8 cmVwbGFjZWFibGU+b3JkZXJfYnlfY2xhdXNlPC9yZXBsYWNlYWJsZT4gXSAp IFsgRklMVEVSICggV0hFUkUgPHJlcGxhY2VhYmxlPmZpbHRlcl9jbGF1c2U8 L3JlcGxhY2VhYmxlPiApIF0KLTxyZXBsYWNlYWJsZT5hZ2dyZWdhdGVfbmFt ZTwvcmVwbGFjZWFibGU+IChBTEwgPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248 L3JlcGxhY2VhYmxlPiBbICwgLi4uIF0gWyA8cmVwbGFjZWFibGU+b3JkZXJf YnlfY2xhdXNlPC9yZXBsYWNlYWJsZT4gXSApIFsgRklMVEVSICggV0hFUkUg PHJlcGxhY2VhYmxlPmZpbHRlcl9jbGF1c2U8L3JlcGxhY2VhYmxlPiApIF0K LTxyZXBsYWNlYWJsZT5hZ2dyZWdhdGVfbmFtZTwvcmVwbGFjZWFibGU+IChE SVNUSU5DVCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ IFsgLCAuLi4gXSBbIDxyZXBsYWNlYWJsZT5vcmRlcl9ieV9jbGF1c2U8L3Jl cGxhY2VhYmxlPiBdICkgWyBGSUxURVIgKCBXSEVSRSA8cmVwbGFjZWFibGU+ ZmlsdGVyX2NsYXVzZTwvcmVwbGFjZWFibGU+ICkgXQorPHJlcGxhY2VhYmxl PmFnZ3JlZ2F0ZV9uYW1lPC9yZXBsYWNlYWJsZT4gKCBbIEFMTCB8IERJU1RJ TkNUIF0gPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBb ICwgLi4uIF0gWyA8cmVwbGFjZWFibGU+b3JkZXJfYnlfY2xhdXNlPC9yZXBs YWNlYWJsZT4gXSApIFsgRklMVEVSICggV0hFUkUgPHJlcGxhY2VhYmxlPmZp bHRlcl9jbGF1c2U8L3JlcGxhY2VhYmxlPiApIF0KIDxyZXBsYWNlYWJsZT5h Z2dyZWdhdGVfbmFtZTwvcmVwbGFjZWFibGU+ICggKiApIFsgRklMVEVSICgg V0hFUkUgPHJlcGxhY2VhYmxlPmZpbHRlcl9jbGF1c2U8L3JlcGxhY2VhYmxl PiApIF0KIDxyZXBsYWNlYWJsZT5hZ2dyZWdhdGVfbmFtZTwvcmVwbGFjZWFi bGU+ICggWyA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ IFsgLCAuLi4gXSBdICkgV0lUSElOIEdST1VQICggPHJlcGxhY2VhYmxlPm9y ZGVyX2J5X2NsYXVzZTwvcmVwbGFjZWFibGU+ICkgWyBGSUxURVIgKCBXSEVS RSA8cmVwbGFjZWFibGU+ZmlsdGVyX2NsYXVzZTwvcmVwbGFjZWFibGU+ICkg XQogPC9zeW5vcHNpcz4KQEAgLTE1OTEsMTQgKzE1ODksMTIgQEAgc3FydCgy KQogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KLSAgICBUaGUgZmlyc3QgZm9y bSBvZiBhZ2dyZWdhdGUgZXhwcmVzc2lvbiBpbnZva2VzIHRoZSBhZ2dyZWdh dGUKLSAgICBvbmNlIGZvciBlYWNoIGlucHV0IHJvdy4KLSAgICBUaGUgc2Vj b25kIGZvcm0gaXMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0LCBzaW5jZQotICAg IDxsaXRlcmFsPkFMTDwvbGl0ZXJhbD4gaXMgdGhlIGRlZmF1bHQuCi0gICAg VGhlIHRoaXJkIGZvcm0gaW52b2tlcyB0aGUgYWdncmVnYXRlIG9uY2UgZm9y IGVhY2ggZGlzdGluY3QgdmFsdWUKLSAgICBvZiB0aGUgZXhwcmVzc2lvbiAo b3IgZGlzdGluY3Qgc2V0IG9mIHZhbHVlcywgZm9yIG11bHRpcGxlIGV4cHJl c3Npb25zKQotICAgIGZvdW5kIGluIHRoZSBpbnB1dCByb3dzLgotICAgIFRo ZSBmb3VydGggZm9ybSBpbnZva2VzIHRoZSBhZ2dyZWdhdGUgb25jZSBmb3Ig ZWFjaCBpbnB1dCByb3c7IHNpbmNlIG5vCisgICAgVGhlIGZpcnN0IGZvcm0g b2YgYWdncmVnYXRlIGV4cHJlc3Npb24gd2l0aCB0aGUgPGxpdGVyYWw+QUxM PC9saXRlcmFsPgorICAgIGtleXdvcmQgKHRoZSBkZWZhdWx0KSBpbnZva2Vz IHRoZSBhZ2dyZWdhdGUgb25jZSBmb3IgZWFjaCBpbnB1dCByb3cuCisgICAg U3BlY2lmeWluZyA8bGl0ZXJhbD5ESVNUSU5DVDwvbGl0ZXJhbD4gaW52b2tl cyB0aGUgYWdncmVnYXRlIG9uY2UgZm9yCisgICAgZWFjaCBkaXN0aW5jdCB2 YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiAob3IgZGlzdGluY3Qgc2V0IG9mIHZh bHVlcywgZm9yCisgICAgbXVsdGlwbGUgZXhwcmVzc2lvbnMpIGZvdW5kIGlu IHRoZSBpbnB1dCByb3dzLgorICAgIFRoZSBzZWNvbmQgZm9ybSBpbnZva2Vz IHRoZSBhZ2dyZWdhdGUgb25jZSBmb3IgZWFjaCBpbnB1dCByb3c7IHNpbmNl IG5vCiAgICAgcGFydGljdWxhciBpbnB1dCB2YWx1ZSBpcyBzcGVjaWZpZWQs IGl0IGlzIGdlbmVyYWxseSBvbmx5IHVzZWZ1bAogICAgIGZvciB0aGUgPGZ1 bmN0aW9uPmNvdW50KCopPC9mdW5jdGlvbj4gYWdncmVnYXRlIGZ1bmN0aW9u LgogICAgIFRoZSBsYXN0IGZvcm0gaXMgdXNlZCB3aXRoIDxmaXJzdHRlcm0+ b3JkZXJlZC1zZXQ8Lz4gYWdncmVnYXRlCg== --047d7b33dc5e37217b050d15baa8 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-docs mailing list (pgsql-docs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-docs --047d7b33dc5e37217b050d15baa8--