| Contents[hide] | 
COUNT Function
The COUNT function returns a count of rows based on certain criteria. The syntax is:1.COUNT(ALL or DISTINCT expression) or COUNT(*)If you specify a "*" as the criterion, COUNT returns the total number of rows in a table; for example, the following query counts rows in the FactFinance table of Adventure Works DW database:
1.SELECT COUNT(*)2.FROM FactFinance3. 4.Results:5.-----------6.39409If you join multiple tables then COUNT(*) returns the number of rows satisfying the join criterion, as in the following:
1.SELECT COUNT(*)2.FROM FactFinance a INNER JOIN DimOrganization b3.ON a.OrganizationKey = b.OrganizationKeyUnlike all other aggregate functions, COUNT does not ignore NULL values.
If you need to find the count of unique items within a column in a table use COUNT (DISTINCT column_name) syntax. For example, the following query counts unique organization keys within the FactFinance table:
1.SELECT COUNT(DISTINCT OrganizationKey)2.FROM FactFinance3. 4.Results:5.-----------6.9COUNT_BIG Function
The COUNT_BIG function is identical to the COUNT function, but returns a BIGINT data type, whereas COUNT returns an INT. The upper limit for INT data type is 2 billion; therefore if you anticipate counting more than two billion rows use the COUNT_BIG function. Any attempt to use the COUNT function when counting over 2 billion rows returns an error.MAX Function
The MAX function returns the biggest value within a given set. The syntax is:1.MAX(ALL or DISTINCT expression)The ALL keyword is optional and is the default unless DISTINCT is specified. The DISTINCT keyword specifies that each unique value should be considered. This keyword really has no use with MAX function since it returns a single value; however the keyword is supported for ANSI compatibility.
For example, the following returns the greatest amount from the FactFinance table:
1.SELECT2.MAX(amount)3.FROM FactFinance4.Results:5.----------------------6.4820988Note that the parameter of MAX can be any valid expression, including string columns, as in the following:
1.SELECT2.MAX(EnglishProductName)3.FROM DimProduct01.SELECT02.EnglishProductName03.FROM DimProduct04.WHERE LEN(EnglishProductName) = (05. SELECT MAX(LEN(EnglishProductName))06. FROM DimProduct)    Results:    EnglishProductName07.--------------------------------------------------08.ML Mountain Frame-W - Silver, 4009.ML Mountain Frame-W - Silver, 4210.ML Mountain Frame-W - Silver, 4611.ML Mountain Frame-W - Silver, 38MIN Function
The MIN function returns the biggest value within a given set. The syntax is:1.MIN(ALL or DISTINCT expression)The ALL keyword is optional and is the default unless DISTINCT is specified. The DISTINCT keyword specifies that each unique value should be considered. This keyword really has no use with MIN function since it returns a single value; however the keyword is supported for ANSI compatibility.
For example, the following returns the greatest amount from the FactFinance table:
1.SELECT2.MIN(amount)3.FROM FactFinance4.Results:5.----------------------6.-1121918Note that the parameter of MIN can be any valid expression, including string columns, as in the following:
1.SELECT2.MIN(EnglishProductName)3.FROM DimProduct    4. 5.Results:6.--------------------------------------------------7.Adjustable RaceNote that "Adjustable Race" is returned because it is the first value in the alphabetically ordered list of product names, not because it is the shortest product name. You can combine MIN function with LEN function to return the products with the shortest names, as follows:
01.SELECT02.EnglishProductName03.FROM DimProduct04.WHERE LEN(EnglishProductName) = (05.SELECT MAX(LEN(EnglishProductName))06.FROM DimProduct)   07. 08.Results:    09.EnglishProductName10.--------------------------------------------------11.StemAVG Function
The AVG function returns the average of the values within a column. Unlike MIN and MAX, AVG can only accept a numeric expression as a parameter. The syntax is:1.AVG(ALL or DISTINCT numeric column)ALL keyword is optional and is assumed by default. You can specify the DISTINCT keyword if you want to take into account only the unique occurrence of each value.
The following query returns the average amount from FactFinance table:
1.SELECT2.AVG(Amount)3.FROM FactFinance    4. 5.Results:6.-----------7.34475.3841178411The next example uses DISTINCT keyword to return the average of distinct values:
1.SELECT2.AVG(DISTINCT Amount)3.FROM FactFinance    4. 5.Results:6.-----------7.95592.8708615292The AVG function returns the same (or a similar) data type as the group of values it accepts. So if you pass an integer, expect an integer back; if you examine float values with the AVG function you will get a float value back.
SUM Function
The SUM function returns the sum of all or unique values. Unlike MIN and MAX, SUM can only accept a numeric expression as a parameter. The syntax is:1.SUM(ALL or DISTINCT numeric column)ALL keyword is optional and is assumed by default. You can specify the DISTINCT keyword if you want to take into account only the unique occurrence of each value.
The following query returns the sum of amounts from FactFinance table:
1.SELECT2.SUM(Amount)3.FROM FactFinance    4. 5.Results:6.-----------7.1358640412.7The next example uses DISTINCT keyword to return the sum of distinct values:
1.SELECT2.SUM(DISTINCT Amount)3.FROM FactFinance    4. 5.Results:6.-----------7.1251597458.19The SUM function returns the same (or a similar) data type as the group of values it accepts. So if you pass an integer, expect an integer back; if you examine float values with the SUM function you will get a float value back.
STDEV Function
The STDEV function calculates the standard deviation for all items in the SELECT statement. This function can only be used with numeric columns. The syntax is:1.STDEV(ALL or DISTINCT numeric expression)ALL keyword is optional and is assumed by default. You can specify the DISTINCT keyword if you want to take into account only the unique occurrence of each value. The STDEV function always returns a FLOAT data type value.
The following example returns the standard deviation of amounts from FactFinance table:
1.SELECT2.STDEV(amount)3.FROM FactFinance    4. 5.Results:6.----------------------7.164041.892959458STDEVP Function
The STDEVP function calculates the standard deviation for the population of items in the SELECT statement. This function can only be used with numeric columns. The syntax is:1.STDEVP(ALL or DISTINCT numeric expression)ALL keyword is optional and is assumed by default. You can specify the DISTINCT keyword if you want to take into account only the unique occurrence of each value. The STDEVP function always returns a FLOAT data type value.
The following example returns the standard deviation of population for amounts in the FactFinance table:
1.SELECT2.STDEVP(amount)3.FROM FactFinance    4. 5.Results:6.----------------------7.164039.811671762VAR Function
The VAR function calculates the statistical variance of all values in the SELECT statement. This function can only be used with numeric columns. The syntax is:1.VAR(ALL or DISTINCT numeric column)ALL keyword is optional and is assumed by default. You can specify the DISTINCT keyword if you want to take into account only the unique occurrence of each value. The VAR function always returns a FLOAT data type value.
The following example returns the variance of amounts from FactFinance table:
1.SELECT         VAR(amount)  FROM FactFinance   2.  3.Results:  4.----------------------  5.26909742645.7224VARP Function
The VARP function calculates the statistical variance for the population of values in the SELECT statement. This function can only be used with numeric columns. The syntax is:1.VARP(ALL or DISTINCT numeric column)ALL keyword is optional and is assumed by default. You can specify the DISTINCT keyword if you want to take into account only the unique occurrence of each value. The VARP function always returns a FLOAT data type value.
The following example returns the variance for the population of amounts from the FactFinance table:
1.SELECT         VARP(amount)  FROM FactFinance    2. 3.Results:  4.----------------------  5.26909059813.3073CHECKSUM_AGG Function
The CHECKSUM_AGG function can be used to detect data changes in a table. This function can only work on integer data type; otherwise the functionality is very similar to other aggregate functions like SUM or AVG. The syntax is:1.CHECKSUM_AGG(ALL or DISTINCT integer expression)ALL keyword is optional and is assumed by default. You can specify the DISTINCT keyword if you want to take into account only the unique occurrence of each value. The CHECKSUM_AGG function always returns a INT data type value.
The following query returns the checksum of amount column in FactFinance table; then it updates some rows in the table; the second checksum is different from the first indicating that the data values have changed:
1.SELECT         CHECKSUM_AGG(CAST(amount AS INT)) AS first_checksum  FROM FactFinance    2.UPDATE FactFinance  SET amount = Amount * 1.1  WHERE timekey = 1    3.SELECT         CHECKSUM_AGG(CAST(amount AS INT)) AS second_checksum  FROM FactFinance1.first_checksum  2.--------------  3.-5793162    4. 5.second_checksum  6.---------------  7.-6063450CHECKSUM Function
The CHECKSUM function returns the checksum value computed over a row in a given table; alternatively it can return the checksum of the specified list of values. This function is intended for building hash indexes and always returns an INT data type value. The syntax is:1.CHECKSUM(*) or CHECKSUM(expression1, expression2, รข€¦ expressionN)The CHECKSUM(*) flavor examines all columns of a given table; it returns an error if the table contains TEXT, NTEXT or IMAGE data type columns. If you specify expressions instead of a table then expressions must be of any data type other than TEXT, NTEXT, IMAGE, CURSOR or sql_variant containing one of the preceding data types.
The following example returns a CHECKSUM of the first row in the DimProduct table:
1.SELECT TOP 1 CHECKSUM(*)  FROM DimProduct    2. 3.Results:  4.-----------  5.1502641847The next example returns a CHECKSUM of given values:
1.SELECT  CHECKSUM(222, 333, 222, 999)   2. 3.Results:  4.-----------  5.828167To add a hash index to a table you need to add a computed column using CHECKSUM function and then create an index on the computed column, as in the following:
1.ALTER TABLE DimProduct  ADD hash_index_column AS CHECKSUM(EnglishProductName) 2.GO   3.CREATE INDEX EnglishProductName_index ON DimProduct(hash_index_column)GROUPING Function
The GROUPING function returns a value of 1 if the row is added to the result set by either ROLLUP or CUBE clause of the SELECT statement. CUBE and ROLLUP extensions allow generating very simple textual reports in a query window. Majority of business reports will use more sophisticated reporting tools than the Query Analyzer or SQL Server Management Studio, therefore CUBE and ROLLUP extensions, as well as the GROUPING function have limited usage. The syntax of the GROUPING function is:1.GROUPING (column)The column is a column referred to in the GROUP BY statement.
The following query returns sum of amounts per organization and total of all organization amounts combined as a separate "grouping row":
01.SELECT OrganizationName,    SUM(Amount) AS total_amount,    GROUPING(OrganizationName) AS 'Grouping Row'  FROM FactFinance a  INNER JOIN DimOrganization b ON a.OrganizationKey = b.OrganizationKey  GROUP BY OrganizationName WITH ROLLUP 02. 03.Results:  04.OrganizationName                                   total_amount           Grouping Row 05.-------------------------------------------------- ---------------------- ------------  06.Australia                                          35553074.99            0  07.Canadian Division                                  292174782.72           0  08.Central Division                                   149032081.6            0  09.France                                             66963799.96            0  10.Germany                                            30339804.03            0  11.Northeast Division                                 134003346.4            0  12.Northwest Division                                 138922888.8            0  13.Southeast Division                                 279284663.6            0  14.Southwest Division                                 232365970.6            0  15.NULL                                               1358640412.7           1The ROLLUP extension and the GROUPING function are more useful when the report is grouping records based on multiple columns. For example, the following query groups the output by product class, style and English name:
1.SELECT EnglishProductName,   class, style,    SUM(SalesAmount) AS total_amount,    GROUPING(EnglishProductName)  AS 'Grouping Row'  FROM FactResellerSales a  INNER JOIN DimProduct b ON a.ProductKey = b.ProductKey  WHERE class IN ('l')  GROUP BY class, style, EnglishProductName WITH ROLLUP




 
0 comments:
Post a Comment