複数割当て用語のカウント

複数割当て用語をカウントするときは、すべての割当てを捕捉するように注意が必要です。

最初の間違った例では、スキャンされたレコード1つにつき1つの任意の用語割当てのみがカウントされます。
RETURN TermCounts AS SELECT
    COUNTDISTINCT(Term) as NumTerms, /* wrong; term is de-multi-assigned 
    * prior to COUNTDISTINCT */
    COUNT(Term) as NumAssignments
GROUP BY Category
2番目の正しい例では、COUNTSUMというパターンが使用されています。このパターンは、部分的なCOUNTを生成してから、それらを足してCOUNTの合計を求めるために使用できます。
DEFINE Terms AS SELECT
    COUNT(1) AS Assignments
GROUP BY Term, Category ;

RETURN TermCounts AS SELECT
    COUNTDISTINCT(Term) as NumTerms,
    SUM(Assignments) AS NumAssignments
FROM Terms
GROUP BY Category