Description
</title>
<para>
- <command>SELECT</command> will get all rows which satisfy the
- WHERE condition
- or all rows of a table if WHERE is omitted.</para>
+ <command>SELECT</command> will return rows from one or more tables.
+ Candidates for selection are rows which satisfy the WHERE condition;
+ if WHERE is omitted, all rows are candidates.</para>
+ <para>
+ <command>DISTINCT</command> will eliminate all duplicate rows from the
+ selection.
+ <command>DISTINCT ON <replaceable class="PARAMETER">column</replaceable></command> will eliminate all duplicates in the specified column; this is
+equivalent to using <command>GROUP BY <replaceable class="PARAMETER">column</replaceable></command>. <command>ALL</command> will return all candidate rows,
+including duplicates.
<para>
The GROUP BY clause allows a user to divide a table
</synopsis>
where <replaceable class="PARAMETER">cond_op</replaceable> can be
- one of: =, <, <=, >, >=, <>
- or a conditional operator like ALL, ANY, IN, LIKE, et cetera
+ one of: =, <, <=, >, >= or <>,
+ a conditional operator like ALL, ANY, IN, LIKE, et cetera or a
+ locally-defined operator,
and <replaceable class="PARAMETER">log_op</replaceable> can be one
of: AND, OR, NOT.
The comparison returns either TRUE or FALSE and all
</title>
<para>
GROUP BY specifies a grouped table derived by the application
- of the this clause:
+ of this clause:
<synopsis>
GROUP BY <replaceable class="PARAMETER">column</replaceable> [, ...]
- </synopsis></para></refsect2>
+ </synopsis></para>
+ <para>
+ GROUP BY will condense into a single row all rows that share the same values for the
+ grouped columns; aggregates return values derived from all rows that make up the group. The value returned for an ungrouped
+ and unaggregated column is dependent on the order in which rows happen to be read from the database.
+ </para>
+</refsect2>
<refsect2 id="R2-SQL-HAVING-2">
<refsect2info>
</programlisting></para>
<para>
- The columns in the ORDER BY must appear in the SELECT clause.
- Thus the following statement is illegal:
+ From release 6.4 of PostgreSQL, the columns in the ORDER BY clause do not need to appear in the SELECT clause.
+ Thus the following statement is now legal:
<programlisting>
SELECT name FROM distributors ORDER BY code;
</programlisting></para>
</programlisting>
<para>
To sum the column <literal>len</literal> of all films and group
- the reults by <literal>kind</literal>:
+ the results by <literal>kind</literal>:
</para>
<programlisting>
SELECT kind, SUM(len) AS total FROM films GROUP BY kind;
<para>
To sum the column <literal>len</literal> of all films, group
- the reults by <literal>kind</literal> and show those group totals
+ the results by <literal>kind</literal> and show those group totals
that are less than 5 hours:
</para>
<programlisting>
This is not currently
allowed in <productname>Postgres</productname>.
</para>
+
+ <para>
+ The DISTINCT ON phrase is not part of <acronym>SQL92</acronym>.
+ </para>
</refsect3>
<refsect3 id="R3-SQL-UNION-1">