DISTINCT

DISTINCTは選択リストの先頭に指定する事で検索結果の重複行をまとめる機能としてよく知られているが、実は集計関数の引数にもDISTINCTの指定が可能である。
例えば、

SELECT COUNT(DISTINCT 列1) FROM テーブル名

という問合せは、列1の値の種類の数を返す。
次の問合せと同義。

SELECT COUNT(*) FROM (SELECT DISTINCT 列1 FROM テーブル名)


Oracle9.2で確認してみた所、全ての集計関数でDISTINCTの指定ができる。*1
MySQL4.1.7ではCOUNT()でのみ使用できた。

*1:多分