Thread: select syntax question
This is what is on postgresql's manual page: http://www.postgresql.org/idocs/index.php?sql-select.html SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ AS output_name ] [, ...] [ FROM from_item [,...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ { UNION | INTERSECT |EXCEPT } [ ALL ] select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ] [ FOR UPDATE [ OF tablename[, ...] ] ] [ LIMIT { count | ALL } ] [ OFFSET start ] According to this syntax, SELECT DISTINCT COUNT(ID) FROM test should be valid while SELECT COUNT(DISTINCT ID) FROM test otherwise. while in fact, both are valid. Is there any difference between this two queries? Thanks! -- Wei Weng Network Software Engineer KenCast Inc.
On Fri, Nov 01, 2002 at 16:33:32 -0500, Wei Weng <wweng@kencast.com> wrote: > This is what is on postgresql's manual page: > > According to this syntax, SELECT DISTINCT COUNT(ID) FROM test > should be valid while SELECT COUNT(DISTINCT ID) FROM test otherwise. > > while in fact, both are valid. > > Is there any difference between this two queries? They mean different things. The first will return the number of rows with non-null values for id. Since only one row is returned it is guarenteed to be distinct so the distinct keyword will have no effect. The second form will return the number of distinct, non-null values for id in the table.
Yes, a big difference. The first returns the distinct COUNT values, but there is only one, of course. The second returns the number of distinct values in the column. --------------------------------------------------------------------------- Wei Weng wrote: > This is what is on postgresql's manual page: > > http://www.postgresql.org/idocs/index.php?sql-select.html > > SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] > * | expression [ AS output_name ] [, ...] > [ FROM from_item [, ...] ] > [ WHERE condition ] > [ GROUP BY expression [, ...] ] > [ HAVING condition [, ...] ] > [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ] > [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ] > [ FOR UPDATE [ OF tablename [, ...] ] ] > [ LIMIT { count | ALL } ] > [ OFFSET start ] > > According to this syntax, SELECT DISTINCT COUNT(ID) FROM test > should be valid while SELECT COUNT(DISTINCT ID) FROM test otherwise. > > while in fact, both are valid. > > Is there any difference between this two queries? > > Thanks! > > > -- > Wei Weng > Network Software Engineer > KenCast Inc. > > > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Don't 'kill -9' the postmaster > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001+ If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania19073