*** DRAFT ***

SQLite Requirement Matrix Details
lang_aggfunc.html

Index Summary Markup Original


R-00466-56349-41436-38164-40851-28282-49107-17370 tcl slt th3 src

In any aggregate function that takes a single argument, that argument can be preceded by the keyword DISTINCT.

slt/slt_lang_aggfunc.test:24   th3/req1/aggfunc01.test:11

/* IMP: R-00466-56349 */
# EVIDENCE-OF: R-00466-56349 In any aggregate function that takes a
# single argument, that argument can be preceded by the keyword
# DISTINCT.

R-00171-59428-63637-20419-61024-28048-20428-49478 tcl slt th3 src

In such cases, duplicate elements are filtered before being passed into the aggregate function.

slt/slt_lang_aggfunc.test:64   th3/req1/aggfunc01.test:15

/* IMP: R-00171-59428 */
# EVIDENCE-OF: R-00171-59428 In such cases, duplicate elements are
# filtered before being passed into the aggregate function.

R-31453-41389-40618-59449-38915-45174-40720-02932 tcl slt th3 src

For example, the function "count(distinct X)" will return the number of distinct values of column X instead of the total number of non-null values in column X.

slt/slt_lang_aggfunc.test:67   th3/req1/aggfunc01.test:18

/* IMP: R-31453-41389 */
# EVIDENCE-OF: R-31453-41389 For example, the function "count(distinct
# X)" will return the number of distinct values of column X instead of
# the total number of non-null values in column X.

R-20409-33051-08329-62436-45384-49643-45094-34288 tcl slt th3 src

The avg() function returns the average value of all non-NULL X within a group.

slt/slt_lang_aggfunc.test:83   th3/req1/aggfunc01.test:53

/* IMP: R-20409-33051 */
# EVIDENCE-OF: R-20409-33051 The avg() function returns the average
# value of all non-NULL X within a group.

R-29052-00975-25766-49663-50070-52826-19346-28533 tcl slt th3 src

String and BLOB values that do not look like numbers are interpreted as 0.

slt/slt_lang_aggfunc.test:92   th3/req1/aggfunc01.test:64

/* IMP: R-29052-00975 */
# EVIDENCE-OF: R-29052-00975 String and BLOB values that do not look
# like numbers are interpreted as 0.

R-07535-34995-01447-54565-38524-09572-39500-26944 tcl slt th3 src

The result of avg() is always a floating point value as long as at there is at least one non-NULL input even if all inputs are integers.

slt/slt_lang_aggfunc.test:168   th3/req1/aggfunc01.test:76

/* IMP: R-07535-34995 */
# EVIDENCE-OF: R-07535-34995 The result of avg() is always a floating
# point value as long as at there is at least one non-NULL input even if
# all inputs are integers.

R-40597-22164-08785-17254-28069-60974-16591-44156 tcl slt th3 src

The result of avg() is NULL if and only if there are no non-NULL inputs.

slt/slt_lang_aggfunc.test:183   th3/req1/aggfunc01.test:90

/* IMP: R-40597-22164 */
# EVIDENCE-OF: R-40597-22164 The result of avg() is NULL if and only if
# there are no non-NULL inputs.

R-34280-42283-63975-25394-58653-47378-35851-53437 tcl slt th3 src

The count(X) function returns a count of the number of times that X is not NULL in a group.

slt/slt_lang_aggfunc.test:197   th3/req1/aggfunc01.test:100

/* IMP: R-34280-42283 */
# EVIDENCE-OF: R-34280-42283 The count(X) function returns a count of
# the number of times that X is not NULL in a group.

R-13776-21310-53568-57098-48778-28371-47670-31301 tcl slt th3 src

The count(*) function (with no arguments) returns the total number of rows in the group.

slt/slt_lang_aggfunc.test:221   th3/req1/aggfunc01.test:103

/* IMP: R-13776-21310 */
# EVIDENCE-OF: R-13776-21310 The count(*) function (with no arguments)
# returns the total number of rows in the group.

R-56088-25150-58914-01692-09523-48299-30387-32306 tcl slt th3 src

The group_concat() function returns a string which is the concatenation of all non-NULL values of X.

slt/slt_lang_aggfunc.test:235   th3/req1/aggfunc01.test:116

/* IMP: R-56088-25150 */
# EVIDENCE-OF: R-56088-25150 The group_concat() function returns a
# string which is the concatenation of all non-NULL values of X.

R-08600-21007-59699-24141-37945-25671-33905-23052 tcl slt th3 src

If parameter Y is present then it is used as the separator between instances of X.

slt/slt_lang_aggfunc.test:249   th3/req1/aggfunc01.test:119

/* IMP: R-08600-21007 */
# EVIDENCE-OF: R-08600-21007 If parameter Y is present then it is used
# as the separator between instances of X.

R-39910-14723-21123-44064-38823-12161-58690-10248 tcl slt th3 src

A comma (",") is used as the separator if Y is omitted.

slt/slt_lang_aggfunc.test:262   th3/req1/aggfunc01.test:122

/* IMP: R-39910-14723 */
# EVIDENCE-OF: R-39910-14723 A comma (",") is used as the separator if Y
# is omitted.

R-52585-35928-11217-60344-47086-04619-13740-01929 tcl slt th3 src

The max() aggregate function returns the maximum value of all values in the group.

slt/slt_lang_aggfunc.test:276   th3/req1/aggfunc01.test:134

/* IMP: R-52585-35928 */
# EVIDENCE-OF: R-52585-35928 The max() aggregate function returns the
# maximum value of all values in the group.

R-13053-11096-22952-42489-44628-35475-18449-44243 tcl slt th3 src

The maximum value is the value that would be returned last in an ORDER BY on the same column.

slt/slt_lang_aggfunc.test:291   th3/req1/aggfunc01.test:137

/* IMP: R-13053-11096 */
# EVIDENCE-OF: R-13053-11096 The maximum value is the value that would
# be returned last in an ORDER BY on the same column.

R-50775-16353-43388-35823-42786-57944-23203-27410 tcl slt th3 src

Aggregate max() returns NULL if and only if there are no non-NULL values in the group.

slt/slt_lang_aggfunc.test:310   th3/req1/aggfunc01.test:140

/* IMP: R-50775-16353 */
# EVIDENCE-OF: R-50775-16353 Aggregate max() returns NULL if and only if
# there are no non-NULL values in the group.

R-16028-39081-19377-46684-10718-53381-04734-64750 tcl slt th3 src

The min() aggregate function returns the minimum non-NULL value of all values in the group.

slt/slt_lang_aggfunc.test:324   th3/req1/aggfunc01.test:181

/* IMP: R-16028-39081 */
# EVIDENCE-OF: R-16028-39081 The min() aggregate function returns the
# minimum non-NULL value of all values in the group.

R-30311-39793-14973-30919-34186-11921-51287-47112 tcl slt th3 src

The minimum value is the first non-NULL value that would appear in an ORDER BY of the column.

slt/slt_lang_aggfunc.test:338   th3/req1/aggfunc01.test:184

/* IMP: R-30311-39793 */
# EVIDENCE-OF: R-30311-39793 The minimum value is the first non-NULL
# value that would appear in an ORDER BY of the column.

R-10396-30188-46343-25997-25410-36538-31299-06809 tcl slt th3 src

Aggregate min() returns NULL if and only if there are no non-NULL values in the group.

slt/slt_lang_aggfunc.test:357   th3/req1/aggfunc01.test:187

/* IMP: R-10396-30188 */
# EVIDENCE-OF: R-10396-30188 Aggregate min() returns NULL if and only if
# there are no non-NULL values in the group.

R-58261-63259-31112-34122-01382-46669-15924-59329 tcl slt th3 src

The sum() and total() aggregate functions return sum of all non-NULL values in the group.

slt/slt_lang_aggfunc.test:371   th3/req1/aggfunc01.test:216

/* IMP: R-58261-63259 */
# EVIDENCE-OF: R-58261-63259 The sum() and total() aggregate functions
# return sum of all non-NULL values in the group.

R-44223-43966-50481-12161-32962-54841-33868-44497 tcl slt th3 src

If there are no non-NULL input rows then sum() returns NULL but total() returns 0.

slt/slt_lang_aggfunc.test:395   th3/req1/aggfunc01.test:219

/* IMP: R-44223-43966 */
# EVIDENCE-OF: R-44223-43966 If there are no non-NULL input rows then
# sum() returns NULL but total() returns 0.

R-07734-01023-35400-33877-62605-53392-63637-26399 tcl slt th3 src

The result of total() is always a floating point value.

slt/slt_lang_aggfunc.test:419   th3/req1/aggfunc01.test:246

/* IMP: R-07734-01023 */
# EVIDENCE-OF: R-07734-01023 The result of total() is always a floating
# point value.

R-19660-56479-36342-33235-14845-36400-09046-33188 tcl slt th3 src

The result of sum() is an integer value if all non-NULL inputs are integers.

slt/slt_lang_aggfunc.test:433   th3/req1/aggfunc01.test:249

/* IMP: R-19660-56479 */
# EVIDENCE-OF: R-19660-56479 The result of sum() is an integer value if
# all non-NULL inputs are integers.

R-47496-23053-18561-13621-46143-05639-50277-51479 tcl slt th3 src

If any input to sum() is neither an integer or a NULL then sum() returns a floating point value which might be an approximation to the true sum.

slt/slt_lang_aggfunc.test:447   th3/req1/aggfunc01.test:303

/* IMP: R-47496-23053 */
# EVIDENCE-OF: R-47496-23053 If any input to sum() is neither an integer
# or a NULL then sum() returns a floating point value which might be an
# approximation to the true sum.

R-08904-24719-11346-47287-22123-01310-57737-05262 tcl slt th3 src

Sum() will throw an "integer overflow" exception if all inputs are integers or NULL and an integer overflow occurs at any point during the computation.

th3/req1/aggfunc01.test:265

/* IMP: R-08904-24719 */
# EVIDENCE-OF: R-08904-24719 Sum() will throw an "integer overflow"
# exception if all inputs are integers or NULL and an integer overflow
# occurs at any point during the computation.

R-19553-64528-24132-56992-22388-20387-05422-50188 tcl slt th3 src

Total() never throws an integer overflow.

th3/req1/aggfunc01.test:269

/* IMP: R-19553-64528 */
# EVIDENCE-OF: R-19553-64528 Total() never throws an integer overflow.