PROPSUM

PROPSUM ( <field_expr> ) [ ON ( <on_field_expr_list> ) ]
<on_field_expr_list> ::= <field_expr> [ , <field_expr> ... ]

Returns the ratio of the SUM aggregate function calculated on a group to the SUM aggregate function calculated on a hierarchically higher group.


Arguments:

<field_expr>

The field-expression whose values are to be summed.
The field-expression data type must be INTEGER or REAL.

<on_field_expr_list>

List of GROUP BY field-expressions identifying the hierarchically higher group on which the denominator SUM aggregate function is to be calculated.
This list of field-expressions must be a proper prefix of the GROUP BY field-expressions, that is, it must contain, in the same order, a subset of the field-expressions specified in the GROUP BY clause, starting with the leftmost GROUP BY field-expression.
When this list of field-expressions is not specified, the denominator SUM aggregate function is calculated on the whole set of input records.

Return Type:

REAL

Remarks:


Examples:

A. PROPSUM

The following query uses the IISW3C Input Format to parse IIS log files and calculate the percentage of bytes sent for each page type:
SELECT EXTRACT_EXTENSION(cs-uri-stem) AS PageType, MUL(PROPSUM(sc-bytes), 100.0) AS PercentBytes
FROM ex040528.log
GROUP BY PageType
A sample output of this query is:
PageType PercentBytes
-------- ------------
htm	7.236737
css	1.035243
gif	23.772064
exe	1.398888
nsf	24.459391
swf	32.528669
jpg	8.003440
html	 0.104051
dll	0.002322
asp	0.000000
js	 1.260613
class	0.198582
The "PercentBytes" output record field shows the ratio of the bytes sent for each page type to the total number of bytes sent in the log.

In this example, the calculation performed by the PROPSUM aggregate function is equivalent to executing the following two queries and calculating the ratio of the two aggregate functions for each page type:
SELECT EXTRACT_EXTENSION(cs-uri-stem) AS PageType, SUM(sc-bytes) AS Numerator
FROM ex040528.log
GROUP BY PageType
SELECT SUM(sc-bytes) AS Denominator
FROM ex040528.log

B. Using ON

The following query uses the IISW3C Input Format to parse IIS log files and calculate the percentage of bytes sent for each page type and HTTP status code relative to the total bytes sent for that page type (i.e. the distribution of HTTP status code response bytes within each page type):
SELECT EXTRACT_EXTENSION(cs-uri-stem) AS PageType, sc-status, MUL(PROPSUM(sc-bytes) ON (PageType), 100.0) AS PercentBytes
FROM ex040528.log 
GROUP BY PageType, sc-status
ORDER BY PageType, sc-status
A sample output of this query is:
PageType sc-status PercentBytes
-------- --------- ------------
asp	200	 0.000000
class	200	 92.591620
class	304	 7.408380
css	200	 6.039609
css	304	 3.502318
css	404	 90.458073
dll	500	 100.000000
exe	200	 100.000000
gif	200	 87.811668
gif	304	 6.935887
gif	404	 5.252445
htm	200	 92.926606
htm	304	 4.197755
htm	404	 2.875639
html	 404	 100.000000
jpg	200	 97.245679
jpg	304	 2.754321
js	 200	 97.963913
js	 304	 2.036087
nsf	200	 99.604883
nsf	302	 0.050656
nsf	304	 0.281114
nsf	403	 0.063347
swf	200	 99.910188
swf	304	 0.089812
For each page type and HTTP status code, the "PercentBytes" output record field shows the ratio of the response bytes for that page type and HTTP status code to the total response bytes for that page type.

In this example, the calculation performed by the PROPSUM aggregate function is equivalent to executing the following two queries and calculating the ratio of the two aggregate functions for each page type and HTTP status:
SELECT EXTRACT_EXTENSION(cs-uri-stem) AS PageType, sc-status, SUM(sc-bytes) AS Numerator
FROM ex040528.log 
GROUP BY PageType, sc-status
ORDER BY PageType, sc-status
SELECT EXTRACT_EXTENSION(cs-uri-stem) AS PageType, SUM(sc-bytes) AS Denominator
FROM ex040528.log 
GROUP BY PageType
ORDER BY PageType

C. PROPSUM, GROUP BY, and HAVING

The following query uses the IISW3C Input Format to parse IIS log files and return the page types that represent more than 10% of the total bytes sent:
SELECT EXTRACT_EXTENSION(cs-uri-stem) AS PageType
FROM ex040528.log 
GROUP BY PageType
HAVING PROPSUM(sc-bytes) > 0.1

See also:

COUNT
SUM
AVG
MAX
MIN
PROPCOUNT
GROUPING

Aggregate Functions

Aggregating Data Within Groups
Calculating Percentages


© 2004 Microsoft Corporation. All rights reserved.