オプションで、選択リスト内のリテラル式をGROUP BY句に入れることもできます。例えば、以下の文では集約関数と選択リストに含まれるリテラル式を使用していますが、GROUP BY句を使用していません。
SELECT COUNT(*), SUBSTRING( CAST( CURRENT_TIME(0) AS CHAR(14) ) FROM 1 FOR 8 ) FROM Sales_Table;
テーブルに行がない場合、このような文の結果は、リテラル式のタイプに応じて異なります。
リテラル式 | 問合わせ結果内のリテラル式の結果 |
---|---|
列参照が含まれていない場合 確定的な関数ではない場合(RANDOMなど) |
リテラル式の値。 RANDOMなどの関数は、集約ステップではなく、リクエストの即時検索ステップで計算されます。 例を挙げます。 SELECT COUNT(*), SUBSTRING(CAST(CURRENT_TIME(0) AS CHAR(14)) FROM 1 FOR 8) FROM Sales_Table; Count(*) Substring(Current Time(0) From 1 For 8) -------- --------------------------------------- 0 09:01:43 |
列参照が含まれている場合 UDFの場合 |
NULL。 例を挙げます。 SELECT COUNT(*), UDF_CALC(1,2) FROM Sales_Table; Count(*) UDF_CALC(1,2) ----------- ------------- 0 ? |